php js self,关于this和self的使用说明_javascript技巧

前两天在写一个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绝对不是多此一举。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值