我为"汽车;然后创建两个汽车;新的";关键字,另一个使用";Object.create;
function car (name) {
this.name=name
}
let car1 = new car("volvo")
let car2 = Object.create(car.prototype)
car2.name = "hyundai"
BTW:是否可以立即用";Object.protype";就像用";新的";?(所以我不必使用下一行"car2.name="hyundai"(
如果我然后设置一个";。喇叭(("方法";car.prototype";,它既适用于";car1";以及";car2":
car.prototype.honk= function (){
return `${this.name}'s honk`
}
然而,如果我定义";。喇叭(("方法在";汽车;构造函数,则";car1";能够使用它,但是";car2";不是!为什么?
function car (name) {
this.name=name
this.honk = function(){
return `${this.name}'s honk`;
}
}
是否可以立即用"Object.create;就像用";新的";?
不,不是。这就是我们使用构造函数的全部原因,以便能够在没有重复代码的情况下初始化新实例的属性。另一方面,Object.create
只创建一个从给定原型继承的空对象。
您刚刚发现了new
运算符和Object.create
之间的主要区别。两者都利用原型继承,但只有new
使用构造函数,而Object.create
只创建了一个具有第一个参数作为原型的对象。