object.create在Javascript中的语法用法

object.create在Javascript中的语法用法,javascript,Javascript,上面的代码块是否与下面相同 var Parent = {}; var child = Object.create(parent); 如果不是,那么Object.create怎么办 上面的代码块是否与下面相同 不会。您的第二个示例会导致运行时错误,因为您试图以非函数的函数形式调用某个对象 如果不是,那么Object.create怎么办 Object.create创建一个新对象,将您提供的对象设置为新对象的原型。例如: var Parent = {}; var child = new Parent

上面的代码块是否与下面相同

var Parent = {};
var child = Object.create(parent);
如果不是,那么Object.create怎么办

上面的代码块是否与下面相同

不会。您的第二个示例会导致运行时错误,因为您试图以非函数的函数形式调用某个对象

如果不是,那么Object.create怎么办

Object.create创建一个新对象,将您提供的对象设置为新对象的原型。例如:

var Parent = {};
var child = new Parent();
Object.create还有第二个参数,它允许您定义正在创建的对象的属性,当然也可以在中定义属性

如果您想重复使用new Xyz来创建共享一个共同原型和初始化(通常称为对象类)的对象,但该术语在JavaScript中非常松散,为此,您可以在与new一起使用时编写一个名为构造函数的函数,并将对象应共享的内容分配给function.prototype,这是新操作符将对象作为其类似于prototype的对象分配给对象的内容。create根据您给它的参数分配prototype。例如:

var a = {foo: "bar"};
var b = Object.create(a);
console.log(b.foo);      // "bar", because `b` gets `foo` via its prototype
console.log("foo" in b); // true, because `b` gets `foo` via its prototype
console.log(b.hasOwnProperty("foo")); // false, the property is on its prototype

有构造函数的用例,也有使用Object.create的用例。JavaScript的优点在于两者都有。

读得好,第二个脚本是否会产生一个可以使用的子脚本?var child=Object.createParent;与var child=functionparent{function O{}O.prototype=parent;返回新O;}parent;
function Thingy() {
}
Thingy.prototype.foo = "bar";

var a = new Thingy(); // 1. Creates new object
                      // 2. Assigns `Thingy.prototype` as the prototype
                      // 3. Calls Thingy with `this` referencing the new object
console.log(a.foo);   // "bar" because it gets it from its prototype