Javascript回调函数执行
问题描述:
我不确定这个的正确术语。但我想写一个接受另一个函数并执行它的函数。 例如。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