首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >那个,self还是me --在JavaScript中更喜欢哪一个?

那个,self还是me --在JavaScript中更喜欢哪一个?
EN

Stack Overflow用户
提问于 2010-04-23 21:19:44
回答 2查看 5.9K关注 0票数 19

在编写JavaScript代码时,有时您会将对象this的引用存储在一个局部变量中,以用于不同的目的(设置适当的作用域,帮助编写混淆代码等)。与that相比,有些程序员更喜欢对this使用别名,以明确其意图。其他人使用self,因为它指向对象本身。我甚至看过me引用的源代码,它仍然有意义。当然还有其他的。

我应该选择哪一个?有没有使用的惯例,还是仅仅是品味问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-23 21:40:48

就我个人而言,我使用的是that,但任何其他明确的东西都可以。

我不会使用self,因为全局变量/window-property self已经作为对window的引用存在。虽然它是完全无用的(所以没有人会关心你是否在跟踪它),但它稍微增加了愚蠢错误被忽视的风险:

代码语言:javascript
复制
var se1f= this;         // misspelled (perniciously). or maybe you just forgot to write line
onclick= function() {
    self.foo= 1;        // whoops, just wrote to `window`!
};

鉴于:

代码语言:javascript
复制
var that= this;
onclick= function() {
    that.foo= 1;        // error thrown
};

有点做作,但JavaScript是如此草率,让错误滑动,你真的不想再这样做了。

票数 44
EN

Stack Overflow用户

发布于 2010-04-23 21:42:33

就我个人而言,我正在尝试更好地使变量的意义比“我稍后需要的东西”更有意义。通常,在有些麻烦的情况下需要这些临时变量;可能需要跟踪两层或更多层的临时this存储。

因此,例如在jQuery设置中,我可能会使用一些东西来记录临时this存储应该包含的元素类型:

代码语言:javascript
复制
$('form').each(function() {
  var $form = $(this);
  $form.find('input:checkbox').each(function() {
    var $checkbox = $(this);
    // ...
  });
});

在变量上使用"$“前缀是跟踪对象是否已”jQuery化“的好方法:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2698831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档