gpt4 book ai didi

javascript - 好的Javascript代码

转载 作者:数据小太阳 更新时间:2023-10-29 06:13:21 24 4
gpt4 key购买 nike

我一直在通过学习 javascript 拓宽视野,我有一个关于样式的快速问题。在编写这样的代码时,我曾经使用文字表示法。

var foo = {
bar:function(){/*something*/}

};

但是我在访问对象中的某些变量时会遇到问题,它会声称一些无论如何都不存在。所以我开始使用它,因为它有效。

var foo = {};
foo.bar = function(){/*something*/};

但在仔细阅读之后,我觉得这种风格并不受欢迎。并不是说我喜欢这种风格,它只是让事情发挥作用。使用文字符号时是否有任何最佳实践,以便我的所有变量等都可以工作?

希望我的旧代码仍然无法正常工作,但我认为它是一个变量,指向另一个具有相同对象字面量或类似内容的变量。

最佳答案

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

例如

var o = {
b: 4,
c: 8,
d: o.b + o.c
}

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

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

以下:

var o = {
b: 4,
c: 8,
d: this.b + this.c
}

会起作用,但不像您期望的那样。您不能在声明中直接引用对象文字。因为在本例中 this 绑定(bind)到 window 而不是 o

如果你想做逻辑使用构造函数

var o = new function() {
this.b = 4;
this.c = 8;
this.d = this.b + this.c;
}

var O = function() {
this.b = 4;
this.c = 8;
this.d = this.b + this.c;
}
var o = new O();

结论:

只要对象文字声明不包含任何逻辑,它就是安全的。 (只需声明具有静态值的函数和属性)。

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

关于javascript - 好的Javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6812849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com