好的,我真的已经阅读了所有可以找到的东西,试图全面了解Javascript。我知道这可以使用构造函数来完成,但我试图理解语言足以知道为什么会发生这种情况......
PeepClass = { color: "Yellow", shape: "Chick" };
var peepsA = new Object(PeepClass);
var peepsB = new Object(PeepClass);
if ( peepsA == peepsB )
document.write( "Why wouldn't these be unique instances?" );
为什么new Object(PeepClass)
没有创建PeepClass
对象的唯一实例?相反,它会导致对同一对象的三次引用。
答案 0 :(得分:2)
我想你想要这个:
var peepsA = Object.create( PeepClass );
现在peepsA
是一个新对象,它继承自对象PeepClass
。
当你将一个对象传递给new Object()
时,返回同一个对象,这就是操作是无操作。
PeepClass === new Object( PeepClass )
这意味着符号new Object( obj )
毫无意义。
答案 1 :(得分:0)
换句话说,您可以通过两种方式初始化对象:
// these are equivalent
var o1 = new Object();
var o2 = {};
答案 2 :(得分:0)
引用MDN:
Object constructor为给定值创建一个对象包装器。 如果值为null或未定义,则将创建并返回空值 对象,否则,它将返回对应类型的对象 达到给定值。
换句话说,当您致电new Object(PeepClass)
时,您获得的内容不是PeepClass
的实例,而是PeepClass
本身的实例。
答案 3 :(得分:0)
阅读ECMAScript标准中的新对象([value])构造。如果value是ECMAScript对象,那么它不会创建新对象,只返回值。