例如,我有一個函數定義如下:
是有可能得到通過函數名參數在JavaScript
var fn1 = function(obj, p1, p2) {}
是否有可能通過函數名fn1
外FN1得到這個函數的參數?
我想動態創建一個新的fn2(p1, p2)
,並在此函數中傳遞obj來呼叫fn1
?
任何人都可以幫忙嗎?非常感謝。
例如,我有一個函數定義如下:
是有可能得到通過函數名參數在JavaScript
var fn1 = function(obj, p1, p2) {}
是否有可能通過函數名fn1
外FN1得到這個函數的參數?
我想動態創建一個新的fn2(p1, p2)
,並在此函數中傳遞obj來呼叫fn1
?
任何人都可以幫忙嗎?非常感謝。
你並不需要的範圍傳遞給function
這樣的:
var fn1 = function(scope, p1, p2) {}
我相信你想要的是什麼樣的call
方法。 call
方法用於代表另一個對象調用方法。它允許您將功能的這個對象從原始的上下文更改爲由第一個arg指定的新對象。 call
Method Ref. - JS
這裏是一些例子:
var fn1 = function(p1,p2){};
var fnThatCall = function(p1,p2){
var scpe = this;
fn1.call(scope,p1,p2);
};
是的,你是對的,這是我的意思,但我想基於'fn1'參數動態定義'fnThatCall',而不是硬編碼。可能? – Lune
當然,存在一些方法來做到這一點,所以其中之一是這樣的:你可以使用'arguments'對象,它是所有'function'對象中存在的局部變量,它是一個包含所有參數的數組,因此您需要抽象參數的名稱並使用此數組。 https://msdn.microsoft.com/en-us/library/87dw3w1k(v=vs.94).aspx –
範圍是在Javascript危險地帶。你想做什麼?更具體的例子會有所幫助。 – Wainage
非常寬泛更具體 –
我將範圍更改爲obj,它只是一個對象。 – Lune