我试图在函数对象属性中分配一个函数,而不实际调用函数本身。
例如,
我有以下函数对象类定义
function objectOne(name, value, id){
this.name=name;
this.value=value;
this.id=id;
this.methodOne=methodFunction(this);
}
最后一行this.methodOne=methodFunction(this);
我想将当前对象传递给函数,但同时我不想立即执行该函数。
但是如果我这样做而没有括号this.methodOne = methodFunction那么这个对象的参数就不会作为参数传递给函数。
有没有办法解决这个问题。
提前谢谢
答案 0 :(得分:3)
This页帮助我最好地解释了这个概念。基本上会做类似以下的事情。
function objectOne(name, value, id) {
function methodFunction(value) {
// do something
}
var that = this;
this.methodOne = function() {
methodFunction(that);
};
}
var x = new objectOne("one", 2, 3);
x.methodOne();
答案 1 :(得分:2)
你可以这样做
function objectOne(name, value, id){
this.name=name;
this.value=value;
this.id=id;
this.methodOne=function() { methodFunction(this); };
}
答案 2 :(得分:1)
这种事情就是“咖喱”。要么使用你最喜欢的JS库中的curry(),要么自己创建:
function curry (func, what_this) {
var what_this = what_this || window;
var args = [];
for (var i=2, len = arguments.length; i < len; ++i) {
args.push(arguments[i]);
};
return function() {
func.apply(what_this, args);
};
}
然后构造函数的最后一行如下所示:
this.methodOne=curry(methodFunction, undefined, this);