首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >好的Javascript代码

好的Javascript代码
EN

Stack Overflow用户
提问于 2011-07-25 15:20:36
回答 2查看 288关注 0票数 5

我一直在开阔我的视野,学习javascript,我有一个关于风格的快速问题。在编写这样的代码时,我经常使用文字符号。

代码语言:javascript
复制
var foo = {
  bar:function(){/*something*/}

};

但我在访问对象中的某些变量时会遇到问题,它会断言有一些变量无论如何都不存在。所以我开始用这个,因为它起作用了。

代码语言:javascript
复制
var foo = {};
foo.bar = function(){/*something*/};

但在阅读了一些之后,我得到的印象是这种风格并不是首选的。并不是说我喜欢这种风格,它只是让事情变得正常。在使用文字表示法时,有没有什么最佳实践,这样我所有的变量都可以工作?

我希望我的旧代码仍然不能工作,但我认为它是一个指向另一个变量的变量,具有相同的对象文字或类似的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 15:23:20

对象字面量应该是一个静态定义,当你在字面量声明中进行计算或逻辑时,它就会中断。如果您需要逻辑/计算,请改用对象构造函数

例如

代码语言:javascript
复制
var o = {
  b: 4,
  c: 8, 
  d: o.b + o.c
}

将导致TypeError,因为未定义o。这样做的原因是,首先创建对象文字,然后将其分配给变量o

因此,当您创建对象文字时,对象o并不存在。

以下内容:

代码语言:javascript
复制
var o = {
  b: 4,
  c: 8, 
  d: this.b + this.c
}

将会起作用,但不是你所期望的那样。不能在声明中直接引用object文本。因为在本例中,this绑定到window,而不是o

如果您想要执行逻辑,请使用构造函数进行

代码语言:javascript
复制
var o = new function() {
  this.b = 4;
  this.c = 8;
  this.d = this.b + this.c;
}

代码语言:javascript
复制
var O = function() {
  this.b = 4;
  this.c = 8;
  this.d = this.b + this.c;
}
var o = new O();

结论:

只要object文字声明不包含逻辑,它就是安全的。(只需使用静态值声明函数和属性)。

如果声明包含逻辑,它应该在函数体中(如构造函数)

票数 6
EN

Stack Overflow用户

发布于 2011-07-25 15:25:58

您可以通过this访问当前对象的成员

代码语言:javascript
复制
var foo = {
    bar: 10,
    baz: function() {
        console.log(this.bar);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6812849

复制
相关文章

相似问题

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