在函数对象中分配函数而不调用函数本身

时间:2010-05-21 16:24:09

标签: javascript function

我试图在函数对象属性中分配一个函数,而不实际调用函数本身。

例如,

我有以下函数对象类定义

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那么这个对象的参数就不会作为参数传递给函数。

有没有办法解决这个问题。

提前谢谢

3 个答案:

答案 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);