Javascript组合原型函数

Javascript composition prototype function

本文关键字:函数 原型 组合 Javascript      更新时间:2023-09-26
Function.prototype.times = function(val){
        var that = this;
        return function (arg) {
            if(val == 0){
                return that.call(this,arg);
            }
            else{
                var newArg = that.call(this,arg);
                var newVal = val - 1;
                return that.call(that.times,newVal,newArg);
            }
        }
    }
    var add_two = function (num) { return num + 2; };
    var add_six = add_two.times(3);
    alert(add_six(2));

有人可以帮助我解释为什么这段代码不起作用吗?谢谢!

有几个问题,这里有一个固定版本:

Function.prototype.times = function(val){
    var that = this;
    return function (arg) {
        if(val == 1) {
            return that.call(this,arg);
        } else{
            var newArg = that.call(this,arg);
            var newVal = val - 1;
            return that.times.call(that,newVal)(newArg);
        }
    }
}
var add_two = function (num) { return num + 2; };
var add_six = add_two.times(3);
alert(add_six(2)); // 8

请检查一下。链接

基本上add_six不是函数,而是函数的引用。 检查下面的代码

 alert(typeof add_six(2));