我不确定这个的正确用语。但我想编写一个接受另一个函数并执行它的函数。 例如。
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(newData);
}
test("hello", function(data){
alert(data);
});
数据应包含“hello Shawn”字符串。请帮我改写一下正确的方法。
答案 0 :(得分:5)
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
或{ {1}},调用函数中的undefined
关键字将引用Global对象(this
)。
答案 1 :(得分:2)
看起来不错,但你可以改变
aFunc.call(newData);
到
aFunc(newData);
答案 2 :(得分:1)
你很亲密。 “call”的第一个参数是“scope”参数。在这种情况下,它并不重要,因为你没有在匿名函数中的任何地方使用“this”,所以任何值都足够了。
function test(data, aFunc) {
var newData = data + " Shawn";
aFunc.call(this, newData);
}
test("hello", function(data){
alert(data);
});