使用或不使用prototype有什么区别?他们显然也这样做。

使用prototype

function poligon(angles){
     this.angles = angles;
}
poligon.prototype.color = function(){ return "blue"; }

var mypol = new poligon(14);

alert(mypol.color());


没有prototype

function poligon(angles){
     this.angles = angles;
}
poligon.color = function(){ return "blue"; }

var mypol = new poligon(12);

alert(poligon.color());


这实际上意味着在没有prototype的情况下添加“颜色”对象的含义?

最佳答案

是的,在引入javascript原型时并不总是很清楚。

如果向原型添加方法,则从该原型继承的每个对象从那时起都将具有此功能。在这种情况下,您的类/函数“ poligon”可能是从该原型继承的唯一类。

当您声明一个新类型(例如,“矩形”)并声明rectangle.prototype = poligon.prototype;时,就会出现区别。现在,您的矩形类将继承在poligon原型中声明的所有方法,如果只是将方法添加到“ poligon”中,情况就不会如此。

继承在javascript中的工作方式不同,并且在来自经典OOP语言的情况下有时会非常混乱。

09-18 01:06