JavaScript的回调函数内部this的指向问题以及四种绑定this指向的方法
1、常见回调函数内部的this指向问题
我们先看下面这段代码:
var o = {
age : 12,
say : function() {
function callback() {
return this.age;
}
func(callback);
}
};
function func(callback) {
var name = "Xiao Ming";
console.log(name + " is " + callback() + " years old.");
}
o.say();
代码分析:这里创建了一个单例对象【o】和一个普通函数【func】,【o】中有一个方法【say】,在方法【say】里面调用了函数【func】,并传入了一个回调函数【callback】作为参数,【callback】中返回了对象【o】的属性【age】。当执行到函数【func】时,打印的结果如下:
console.log(name + " is " + callback() + " years old.");
//Xiao Ming is undefined years old.
我们可以看到【func】中执行的回调函数【callback】的返回结果是“undefined”而非“12”。
原因如下:函数内部的【this】指向于此函数的调用者(拥有者ÿ