使用或不使用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语言的情况下有时会非常混乱。