二者有何区别,如何选择?
其实最主要的区别可以概括成一点:new
所作用的是一个函数,而Object.create
所作用的是两个普通对象。
Object.create
所作用的是两个普通对象,所以它不能包含可执行代码。它只是简单地将第一个参数设置为新对象的原型,并且把第二个对象自身的所有可枚举属性复制到新对象中。
所以,当你想以一个已有对象作为原型来创建另一个对象时,用Object.create
。而如果你已经定义了一个构造函数,想用其创建对象,就用new
。所以归根结底,两者的适用情况有少许差别,但本质是一样的,具体选择哪个要看你手里有什么。
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答927 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
Object.create()可以指定你要创建的对象的原型,不支持传参
new Obj() 可以传参,原型一般为Obj的prototype