繁体   English   中英

将函数作为对象属性传递

[英]Passing a function as an object property

这是我想做的:

function genTxnId(id) {
   return id;
}

var ws;
ws = new funcB('A', {evaluator: genTxnId(25)});

但是我发现,一旦进入funcB,传入的对象的“ evaluator”属性将在进入函数之前进行评估。 无论如何,在funcB中使用它之前,请将其保留为genTxnId(25)。

我知道这样做会使其保持功能:

var funcA = function(b) { return b;

会将其保留为一个函数,但随后我将无法传递参数b。

使用.bind() ,可以将函数的参数绑定到特定的值,而无需调用它。 .bind()将返回一个函数,您可以在其他地方调用该函数,并传递尚未绑定的其余参数。

function getTxnId (id) {
    return id;
}

function funcB (str, obj) {
    obj.evaluator();
}

var ws = new funcB('A', {
    evaluator: genTxnId.bind(this, 25)
});

一个需要注意的是,结合作为它的第一个参数要将对象this将被绑定。 这意味着您不能依靠getTxnIdthis值来引用新创建的对象,这似乎更直观(尽管据我所知不可能)。 但是通常,您不需要这样做,因此您可以传入任何旧对象。 如果您永远不会在该函数内使用this函数,甚至可以传递null ,即getTxnId.bind(null, 25)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM