在JavaScript中,可以使用Object的结合构造函数来创建对象:
var person = new Object();
person.firstName = 'John';
person.lastName = 'Doe';
几乎所有人似乎都喜欢将对象创建的方式视为文字:
var person2 = {
firstName: 'Peter',
lastName: 'Smith'
}
现在我想知道: 为什么构造函数方式完全被忽略?
但特别是: 是否有人应该选择一种方式而不是另一种呢?
我的意思是构造函数必须出于某种原因......
答案 0 :(得分:5)
我的意思是构造函数必须出于某种原因......
Object
构造函数最初是创建对象的唯一方法。对象初始化程序语法({}
)是added in JavaScript 1.2,是1997年Netscape Navigator 4.0中更新的JavaScript。
首选项语法优先于Object
构造函数有几个原因:
Object
可以) 1 相比之下,当使用可能指向Object
函数的变量或者可能指向某个其他函数时,基本没有理由使用Object
来创建除间接之外的对象,例如:< / p>
function constructAndInit(ctor, props) {
var obj = new ctor();
if (props) {
for (var key in props) {
obj[key] = props[key];
}
}
return obj;
}
// Maybe use use Object...
var foo = constructAndInit(Object);
// ...or maybe you use somnething else
var bar = constructAndInit(NiftyThingy);
我们当然会定期使用Object
函数而不用调用它来创建对象:
Object.prototype
Object
属性的功能,例如Object.create
,Object.defineProperty
等 1 “无法覆盖/遮蔽(而Object
可以)”以下是遮蔽Object
的示例:
function foo() {
var Object = {
foo: "bar"
};
// ...later...
var o = new Object(); // fails
}
foo();