【发布时间】:2016-02-12 02:13:46
【问题描述】:
现在,在我被标记为重复问题之前,请听我说完。我知道这个问题之前已经被问过很多次了,比如Use of 'prototype' vs. 'this' in JavaScript? 但是,我已经阅读了所有这些答案,这没有任何意义。这些问题的答案基本上是说,当您将属性放入原型中时,所有实例都会发生更改,因为它是共享的。但是你可以通过将属性放在所有其他对象继承的基类中来实现完全相同的事情......我的意思是,如果你有这个代码,例如:
var Car = function(name){
this.name = name;
this.printName = function(){
console.log("Name is: " + this.name);
}
};
var toyota = new Car("Toyota");
var mercedes = new Car("Mercedes");
var ferrari = new Car("Ferrari");
toyota.printName();
mercedes.printName();
ferrari.printName();
如果我将顶部更改为:
var Car = function(name){
this.name = name;
this.printName = function(){
console.log("PRINTING NAME");
}
};
然后所有的实例和继承自 THOSE 对象的所有其他对象等等都会被更新。当您可以更改继承所有内容并更新所有内容的基本构造函数时,为什么还要使用原型?
【问题讨论】:
标签: javascript inheritance prototype