[英]adding arguments to a function before calling that function - node.js
說我有一個功能:
function foo(){
console.log(arguments);
}
process.nextTick(foo);
如何在process.nextTick()
調用中將參數應用於foo?
我該怎么做
//偽代碼
var args = [];
process.nextTick(foo.addArgs(args));
...但不打電話給foo?
有幾種可能性。 對於前幾個選項,我(可能是錯誤的)假設您不介意將args
作為單個數組參數傳遞。 如果希望args
每個元素都是foo()
的單獨參數,請參見最后一個示例(使用apply()
)。
假設您不在foo()
內部使用this
選項,則可以使用this
選項:
process.nextTick(function () {
foo(args);
});
要么:
var bar = foo.bind(null, args);
process.nextTick(bar);
如果你使用this
內部foo()
改變null
在上面的例子中,以您所期望的值this
有。 例如:
var bar = foo.bind(foo, args);
process.nextTick(bar);
您可能還希望查看call()
和apply()
。 如果您想擁有要分布在函數args(即foo(1, 2, 7)
foo([1, 2, 7])
foo(1, 2, 7)
而不是foo([1, 2, 7])
的數組(例如[1, 2, 7]
),則apply()
特別有用foo([1, 2, 7])
):
process.nextTick(function () {
foo.apply(null, args);
}
與bind()
,如果你使用this
內部foo
,然后換null
在上面的例子中是您所期望的值this
有。
您可以使用匿名函數來做到這一點:
var args = [];
process.nextTick(function(){
foo.apply(foo, args);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.