Javascript回调函数执行

Sha*_*ean 1 javascript jquery

我不确定这个的正确用语.但我想编写一个接受另一个函数并执行它的函数.例如.

function test(data, aFunc) {
   var newData = data + " Shawn";

   aFunc.call(newData);
}

test("hello", function(data){
   alert(data);
});
Run Code Online (Sandbox Code Playgroud)

数据应包含"hello Shawn"字符串.请帮我改写一下这个正确的方法.

CMS*_*CMS 5

call方法的第一个参数用于this在调用的函数内显式设置关键字(函数上下文),例如:

function test(data, aFunc) {
   var newData = data + " Shawn";

   aFunc.call(newData);
}

test("hello", function () {
   alert(this); // hello Shawn
});
Run Code Online (Sandbox Code Playgroud)

如果要在不关心上下文(this关键字)的情况下调用函数,可以直接调用它而不需要call:

function test(data, aFunc) {
   var newData = data + " Shawn";

   aFunc(newData); // or aFunc.call(null, newData);
}

test("hello", function (data) {
   alert(data);
});
Run Code Online (Sandbox Code Playgroud)

请注意,如果你只是像调用一个函数aFunc(newData);或者使用callapply方法与this设置参数null或者undefined,在this被调用函数中的关键字将引用全局对象(window).