我不確定這個的正確術語。但我想寫一個接受另一個函數並執行它的函數。 例如。Javascript回調函數執行
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(newData);
}
test("hello", function(data){
alert(data);
});
數據應該包含「hello Shawn」字符串。請幫我改寫這個正確的方式。
我不確定這個的正確術語。但我想寫一個接受另一個函數並執行它的函數。 例如。Javascript回調函數執行
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(newData);
}
test("hello", function(data){
alert(data);
});
數據應該包含「hello Shawn」字符串。請幫我改寫這個正確的方式。
的call
方法的第一個參數是用來設置this
關鍵字(函數上下文)明確,調用的函數內部,如:
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(newData);
}
test("hello", function() {
alert(this); // hello Shawn
});
如果要調用一個函數,而不我們在乎的上下文(this
關鍵字),您可以直接調用它,而不call
:
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc(newData); // or aFunc.call(null, newData);
}
test("hello", function (data) {
alert(data);
});
請注意,如果你簡單地調用像aFunc(newData);
功能或使用call
或apply
方法與this
參數設置爲null
或undefined
,則this
關鍵字裏面調用函數將引用全局對象(window
)。
看起來不錯,但你可以改變
aFunc.call(newData);
到
aFunc(newData);
你接近。 「調用」的第一個參數是「範圍」參數。在這種情況下,它並不重要,因爲你沒有在匿名函數中的任何地方使用「this」,所以任何值都足夠了。
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(this, newData);
}
test("hello", function(data){
alert(data);
});
您正在尋找的術語是「高階函數」 – Breton 2010-01-06 20:35:33