每天CookBook之JavaScript-037

  • 函数工厂设计
  • bind的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>037</title>
</head>
<body>
    
</body>
<script type="text/javascript">
(function () {
    function makeString (ldelim, str, rdelim) {
    return ldelim + str + rdelim;
    }

    function quoteString (str) {
         return makeString("'",str,"'");
    }

    function barString (str) {
        return makeString("-",str,"-");
    }

    function namedEntity(str){
        return makeString("#", str, ";");
    }

    console.log(quoteString("apple"));
    console.log(barString("apple"));
    console.log(namedEntity(169));
})(); 

(function () {

    function makeString (ldelim, rdelim, str) {
    return ldelim + str + rdelim;
    }

    function partial (fn) {
         var args = [].slice.call(arguments, 1);
         console.log(args);
         // this的理解很重要
         return function(){
            return fn.apply(this, args.concat([].slice.call(arguments)));
         };
    }

    function add(a,b){
        return a + b;
    }

    var add100 = partial(add, 100);
    console.log(add100(14));

    var nameEntity = partial(makeString, "&#", ";");
    console.log(nameEntity(169));

    var named = makeString.bind(undefined, "&#", ";");
    console.log(named(169));
})(); 
</script>
</html>
posted @ 2016-07-15 22:16  4Thing  阅读(83)  评论(0编辑  收藏  举报