使用或不使用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
添加“颜色”对象并没有它会是什么意思?
答案 0 :(得分:2)
是的,当引入javascript原型时,这并不总是很清楚。
如果向原型添加方法,那么从该原型继承的每个对象都将从该点开始具有此功能。在这种情况下,您的类/函数'poligon'可能是继承自此原型的唯一类。
当您声明一个新类型,例如“矩形”时,您会声明rectangle.prototype = poligon.prototype;
。现在你的矩形类将继承poligon prototype 中声明的所有方法,如果你刚刚将方法添加到'poligon'中,情况就不会这样了。
继承在javascript中的工作方式不同,有时在使用经典的OOP语言时会非常混乱。
答案 1 :(得分:1)
通过像你一样使用原型没有区别,但是当您创建从Poligon
对象派生的新对象时,原型会派上用场。
Poligon.print = function() {};
new Poligon().print(); // Has no method print
Poligon.prototype.print = function() {};
new Poligon().print(); // Tah dah!