使用或不使用原型之间的区别:它们显然也在做同样的事情
Difference between using or not using prototype: they seem apparently to do the same
使用和不使用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语言时有时会非常混乱。
像您一样使用原型没有区别,但是当您创建从Poligon
对象派生的新对象时,原型会派上用场。
Poligon.print = function() {};
new Poligon().print(); // Has no method print
Poligon.prototype.print = function() {};
new Poligon().print(); // Tah dah!
相关文章:
- “util.inherits”和在NodeJS中扩展原型之间的区别
- JS构造函数的原型属性与其原型之间的区别
- 两个对象之间的Javascript原型
- 向构造函数或原型添加属性之间的区别
- 不需要的Javascript效果:原型在实例之间共享闭包
- 理解经典继承和原型继承之间的区别
- 基于类的语言(如Java或Python)和基于原型的语言(例如Javascript)之间的区别
- 试图理解JavaScript中原型和构造函数之间的区别
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- Javascript 原型和调用之间的区别
- 使用原型和对象文字表示法创建对象之间的区别
- 构造函数中的方法与函数的原型属性之间的差异
- 原型:这两个脚本之间的区别
- 构造函数模式和原型模式之间的区别
- 原型函数和 json 表示法函数之间的区别
- 将方法分配给函数内部或外部原型之间的差异
- 持久化对象之间的MongoDB原型继承
- 在JavaScript实例上编写单个原型和使用多个原型之间的区别?只是风格
- 使用或不使用原型之间的区别:它们显然也在做同样的事情
- 对象与其原型之间的差异