- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有时我偶尔会做 JavaScript,我偶然发现了一个关于“最佳实践”的问题。假设我有一组相同类型和结构的对象,我只想用一个标志标记其中一个(例如 isOptimal: true)。这显然是可行的,但我在徘徊,如果在 JS 世界中只有一个对象包含特定属性而其他数组条目在其位置上具有“未定义”,这是否被认为是一种好/坏的做法?也许有一些缺点,我很难看到?显然存在未定义检查。非常感谢您对此的意见,谢谢。
最佳答案
假设您从数组中挑选了两个对象,并希望确保一个是最优的而另一个不是:
if(obj.isOptimal !== obj2.isOptimal)
现在,如果 isOptimal
为 true
或 undefined
,那么它将起作用,如果您将其中之一设置为 false
上面的行停止工作为 false !== undefined
。
如果您构建非结构化数据,您应该始终确保没有不必要的副作用,例如本例。
对于基元,我总是将它们初始化为默认值(""
、0
、false
),我总是将数组初始化为一个空的 ([]
),除了 undefined
是一个可行的选项(例如,如果 user.age
是 undefined
我们还不知道年龄,如果它是 0
用户刚刚出生),那么你必须在用它做数学运算之前总是检查 undefined
。
然而,对于嵌套对象,我认为 undefined
是一个很好的默认值。然后,在进行嵌套访问之前,您必须始终检查该嵌套对象是否存在:
if(user.car)
alert(user.car.model);
如果您必须通过添加附加属性来向新结构添加属性(例如,用户存储在 localStorage 中,那么存储中的旧对象可能没有 isOptimal
属性) 您可以使用 Object.assign
来确保对象结构:
const user = Object.assign({ isOptimal: false }, userFromStorage);
关于javascript - 在 javascript 中只向数组的一个对象添加属性可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591423/
我是一名优秀的程序员,十分优秀!