在javascript中,我们可以用各种方式定义对象原型。
第一个
var foo={
a:1,
b:2
}
第二是
var foo=function(){
this.a=1;
this.b=2;
}
我所知道的是,第一个是对象本身,而从第二个定义创建对象时我们必须使用新的foo()。这两个定义之间是否有任何其他差异。如果两者相同则需要第二个,如果不是那么首先需要什么?
答案 0 :(得分:1)
它们不一样,第二个是Object的构造函数:
var foo = {
a: 1,
b: 2
}
console.log("First: ",
typeof foo, // object
JSON.stringify(foo), // {a:1,b:2}
foo.constructor) // function Object() { [native code] }
var foo = function() {
this.a = 1;
this.b = 2;
}
console.log("Second: ",
typeof foo, // function
JSON.stringify(foo), // undefined, foo is not an Object, it's a function!
foo.constructor) // function Object() { [native code] }
var foo = new foo()
console.log("Thrid: ",
typeof foo, // object
JSON.stringify(foo), // {a:1,b:2}
foo.constructor) // function() { this.a = 1; this.b = 2;}

因此,即使在创建两个对象后,您的.constructor
属性也会有差异。由于第一个Object是由Native构造函数vor在JavaScript中创建的,第二个是由自定义构造函数创建的。
但那是唯一的差异