Object.create与Object.create()与Object.create(null)

时间:2014-08-17 16:33:25

标签: javascript

var obj1 = Object.create;
console.log(typeof obj1);
var obj2 = Object.create(null);
console.log(typeof obj2);
var obj3 = Object.create();
console.log(typeof obj3);

会产生以下控制台消息:

function 
object 
Uncaught TypeError: Object prototype may only be an Object or null: undefined

为什么obj1和obj3的控制台消息有所不同? Object.create和Object.create()有什么区别?

2 个答案:

答案 0 :(得分:4)

没有Object.create

()只是对该函数的引用。 (),这是该功能的调用

正如异常消息所解释的那样,在没有参数的情况下调用Object.create()是一个错误。您必须传递一个对象或值null

答案 1 :(得分:0)

Pointy是对的!

展开Object.create(null)

JS中的所有对象都继承自Object或传递给Object.create的Object。

所以举个例子 var man = Object.create(Person.prototype)

此处man将继承自Person,而Person将继承自Object

但是如果你创建一个这样的对象:Object.create(null)那么结果将是一个从任何东西继承的对象。

因此传递null会导致没有任何继承的对象。