请混淆,这两个项目有什么区别?我想对我正在编写的这段代码应用一个解决方案,这是 plunkr http://plnkr.co/edit/NHS1XYApFEOB2ROUpRSH 的链接
谢谢你的帮助。我完全是编码的初学者。
var myVariable = {};
Object.defineProperties(myVariable, {
'newProperty1': {
value: 'valueOfPropertyOne'
}
});
和:
var myVariable = [];
Object.defineProperties(myVariable, {
'newProperty1': {
value: 'valueOfPropertyOne'
}
});
不同之处在于,在第一种情况下,您最终会得到一个非数组对象,因为您使用 {}
(对象初始值设定项)创建了它,而在第二种情况下,您最终会得到一个数组(也是一个对象),因为您使用 []
(数组初始值设定项)创建了它。所以在第二种情况下,你将拥有神奇的length
属性,Array.prototype
提供的各种东西,等等。
通常,仅当需要这些特定于阵列的功能时才使用阵列。
可以在数组上定义newProperty1
的原因是数组是对象,因此您可以向它们添加属性。事实上,像你在第二个例子中使用的普通数组根本不是真正的数组(链接到我贫血的小博客上的一篇文章),它们只是由具有一些特殊功能的Array.prototype
支持的对象。