怎样解决多层this指向全局对象window的问题
发布时间:2021-01-07 20:54 所属栏目:52 来源:网络整理
导读:如下所示,得到的结果里面,第二个this指向的是window这个全局对象而非f2,原因就是多层this造成的指向不明引起的. var a = { f1: function (){ console.log( this ); var f2 = function (){ console.log( this ); }; f2(); }};a.f1(); // Object // Object ?
如下所示,得到的结果里面,第二个this指向的是window这个全局对象而非f2,原因就是多层this造成的指向不明引起的. var a = { f1: function(){ console.log(this); var f2 = function(){ console.log(this); }; f2(); } }; a.f1(); // Object // Object ? 上面这段代码的实际运行效果其实是这样的:? var test = function(){ console.log(this); } var a = { f1: function(){ console.log(this); var f2 = test; f2(); } }; a.f1(); // Object // Object ? 但我们需要的效果是他指向a对象,而不是window,解决方法是通过另一个变量将this固定住: var a = { f1: function(){ console.log(this); var self = this; var f2 = function(){ console.log(self); }; f2(); } }; a.f1(); // Object // Object ? 这里使用了一个变量: self,将a对象的this固定住,利用函数作用域可以访问父级作用域内变量这一特点,实现this的传递. (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读