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()有什么区别?
答案 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
会导致没有任何继承的对象。