我正在通过在线阅读和编写一些简单的代码来学习 JavaScript 中的函数柯里化。我在在线文章中得到了以下示例
function toArray(obj) {
return Array.prototype.slice.call(obj);
}
Function.prototype.curry = function() {
if (arguments.length<1) {
return this; //nothing to curry with - return function
}
var __method = this;
var args = toArray(arguments);
return function() {
return __method.apply(this, args.concat(toArray(arguments)));
}
}
var add = function(a,b) {
return a + b;
}
var addTen = add.curry(10); //create function that returns 10 + argument
alert(addTen(20)); //alerts 30 correctly
然后我尝试了一个实例化函数的方法。所以我试着跟随。但它在倒数第二行给了我错误“无法获取未定义或空引用的属性'原型'”。我知道这个错误与柯里化无关,但我搞砸了 JS 函数概念的一些基础知识。所以我要去哪里错了。
function Person()
{
this.age = 15;
}
Person.ageAfter = function (years) {
return this.age + years;
}
var personObj = new Person();
var ageAfterFiveYears = personObj.ageAfter.prototype.curry(5); //**Error**
alert(ageAfterFiveYears());