1.使用局部变量来代替this指针
var name = "lz";
var obj = {
name : "lz",
say : function(){
var _this = this;//使用一个变量指向 this
setTimeout(function(){
console.log(_this.name);
},0);
}} obj.say();
2.使用call 或 apply 方法
var name = 'zh';
function say(){
console.log(this.name); };
say();
var obj = {
name : 'tom',
say : function(){
console.log(this.name); }
}
say.call(obj);//tom 将 say 函数中的 this 替换为传入的对象
obj.say();//tom
obj.say.call(null);//zhar 将 obj.say 函数的 this 替换为了 null,也就意味着指向了全局环境
---------------------------------apply();
function say(arg1,arg2){
console.log(this.name,arg1,arg2);
};
var obj = {
name : 'tom',
say : function(){
console.log(this.name);
}
}
say.apply(obj,['one','two']);