簡體   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