0

我知道下面的代码可以访问这个外部。

var o=函数(){var that=这个;这.a=1;$('html').点击(function(){警报(即.a);});}新o();

但我不想对同一个对象使用两个变量名(例如,this和that)。
我不想重复写作var that=这个在每节课上。

我认为下面的代码使用_this而不是那样的代码稍微简单了一点。

var o=函数(){var _this=此;这.a=1;$('html').点击(function(){警报(_this.a);});}新o();

但是,还有其他更简单、更短的方法吗?

  • 2
    我不知道该怎么做_这个那个 评论 2011年4月19日2:44
  • 同意,“那”似乎是标准的方式,为什么要反抗?
    – 房屋9
    评论 2011年4月19日2:50
  • 对不起,我觉得这个比那个简单,因为this.a和this.a都可以用this搜索。a。如果我用that而不是this,我必须用that搜索两次。a和this.a。我不想搜索两次。
    – js型_
    评论 2011年4月19日4:27

2个答案2

重置为默认值
1

我真的很喜欢Ext创建传送函数,让您设置创建任何函数时的值。

以下是功能性较低的创建传送您可以在页面中包含:

Function.prototype.createDelegate=函数(thisObj){var方法=此;返回函数(){return method.apply(thisObj||窗口,参数);};}

下面是如何在示例中使用它,永远不要设置变量:

var o=函数(){这.a=1;$('html').点击(function(){警惕(this.a);}.createDelegate(本));}新o();

Ext的完整版本创建传送让我们将参数作为第二个参数传入,它们可以替代、插入或附加到参数列表中,这些参数将定期传递到要创建委托的函数中

0

这里有一些类似的代码,但我相信它“更安全”如果您创建了多个“o”实例每个实例都可以更新“a”属性

var bar=函数(){var={};a=1;that.showA=函数(){$('html').点击(function(){警惕(that.a);});};返回;}var instanceOfBar=bar();instanceOfBar.showA();

我可能不在这里,已经几个月没有接触javascript了,现在已经生疏了

  • 每个实例如何更新“a”属性?我认为new操作符为每个实例提供了它自己的这个,并且它们从来不会相互更新。但是用它代替这个很简单。谢谢。
    – js型_
    评论 2011年4月19日4:47
  • 啊,是的,你是对的,我在读了“Javascript:thegoodparts”之后就不再尝试使用新关键字了,这篇文章对新关键字的使用有一些有趣的评论-stackoverflow.com/questions/383402/…
    – 房屋9
    评论 2011年4月19日15:13
  • 谢谢你介绍这个有趣的帖子。我真的不知道我是否应该使用new,因为我对原型缺乏了解。仅使用的代码那个在我看来,它比使用三个关键字的代码更简单(那个 新的). 但我认为只使用那个是解决外部访问问题的很好方法从回调函数内部。写得太差了var that=这个;a=1/*不是this.a=1*//*,也不是返回那个(使用new表示)*/.
    – js型_
    评论 2011年4月21日3:47

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.