使用或不使用原型之间的区别:他们似乎显然也是这样做的

时间:2013-04-17 09:13:04

标签: javascript

使用或不使用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添加“颜色”对象并没有它会是什么意思?

2 个答案:

答案 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!