作家
登录

关于this和self的使用说明

作者: 来源:www.28hudong.com 2013-03-30 01:24:07 阅读 我要评论

前两天在写一个chrome的extensions,因为 content里和background交互必需要一个异步方法实现,如: 复制代码 代码如下: var Test = new Class({ options: {}, initialize: function(args) { chrome.extension.sendRequest({ 'type':'options' }, function(options) { this.options = options; …… }); } }); 这个this应该是Test这个对象,但是回调方法里是空的。难道要把this做参数传过去,再call回来?还好,mootools里有个好方法,bind。 复制代码 代码如下: var Test = new Class({ options: {}, initialize: function(args) { chrome.extension.sendRequest({ 'type':'options' }, function(options) { this.options = options; …… }.bind(this)); } }); 这下OK了,继续写: 复制代码 代码如下: var Test = new Class({ options: {}, initialize: function(args) { chrome.extension.sendRequest({ 'type':'options' }, function(options) { this.options = options; $each(this.options, function(o, i) { if (o == '1') { this.fun1(); } else { this.fun2(); } }.bind(this)); }.bind(this)); }, fun1: function {}, fun2: function {} }); 就算有bind也不容易分清哪个this是什么了。而真实的代码比这个要恐怖的多,有的情况下,我们的确需要this指向其它的变量,而不是这个类。 最常用的解决方法,是这样: 复制代码 代码如下: var Test = new Class({ options: {}, initialize: function(args) { var _self = this; chrome.extension.sendRequest({ 'type':'options' }, function(options) { _self.options = options; $each(_self.options, function(o, i) { if (o == '1') { _self.fun1(); } else { _self.fun2(); } }); }); }, fun1: function {}, fun2: function {} }); 我特别定义了一个_self的变量来代替this,这看起来象什么?python! 现在终于体会到python的self绝对不是多此一举。

  推荐阅读

  jQuery Study Notes学习笔记 (二)

1. 使用class与id选择HTML元素   选择id为"myDivId"的元素.由于id是唯一的,所以总是选择到1个或0个元素 复制代码 代码如下: $('#myDivId') 选择class为"myCssClass". 可以选择任何多个class为"myCssClass"的元>>>详细阅读


本文标题:关于this和self的使用说明

地址:http://www.17bianji.com/kaifa2/JS/25914.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)