javascript中this

来源:互联网 发布:淘宝网购物女装晚礼服 编辑:程序博客网 时间:2024/06/07 02:33
栗子:
var name=111;var obj={    name:'222',    printName:function(){         var self=this;         (function(){              console.log(self.name);         })();    }}obj.printName();/*****结果******/111


解释:obj.print方法中,只有直接通过obj调用的方法中,this指向obj,其他例如以下情况不指向obj。

(1)

obj.print();//this,第一层指向obj,因为是obj直接调用执行,第二层this,不是由obj调用执行,也是指向window

(2)

var f=obj.print;

f();//this,第一层,第二层this都是指向window。printName()不是有obj调用执行,而是在window全局环境下执行;


解决:

var name=111;var obj={    name:'222',    printName:function(){          var self=this;         (function(){              console.log(self.name);         })();    }}obj.printName();/*****结果******/‘222’


或者绑定函数执行的对象

var name=111;var obj={    name:'222',    printName:function(){          (function(){              console.log(this.name);         })(this);    }}obj.printName();/*****结果******/‘222’



或者

f.call(obj);



0 0
原创粉丝点击