【JavaScript】原型
之前在【工厂方法】中说这个方法有两个缺点
1.没有new (在函数前面加上new)
2.每个对象都有一套自己的函数,这样浪费了资源
现在靠一个神奇的东西,可以解决第二个问题,那就是原型
原型一个重要的功能(应用):可以扩展系统对象(添加本身不支持的属性和方法)
class | 改变一类元素的样式 相当于prototype!!!(给一类加方法) |
行间样式 | 改变一个元素的样式 给一个对象加方法 |
类 | 模子 |
对象(实例) | 蛋糕 |
Array类 | 不具备实际的功能,只能用来构造对象 |
arr对象 | 真正有功能的东西,被类构造出来 |
下面代码只能alert出arr1
var arr1=new Array(2,4,7,34); var arr2=new Array(35,324,11,55); //目前只有arr1有sum方法。这种情况有点像css中的行间样式,只给一个元素添加样式 //arr1.sum=function(){ var result=0; for(var i=0;i<this.length;i++){ result+=this[i]; } return result; }; alert(arr1.sum()); alert(arr2.sum());
所以给Array这个类加上原型就ok了
1 var arr1=new Array(2,4,7,34); 2 var arr2=new Array(35,324,11,55); 3 //目前只有arr1有sum方法。这种情况有点像css中的行间样式,只给一个元素添加样式 4 //arr1.sum=function(){ 5 //所以给Array(类)的原型加方法。这种情况有点像css中的class,给一类元素添加样式 6 Array.prototype.sum=function(){ 7 var result=0; 8 for(var i=0;i<this.length;i++){ 9 result+=this[i]; 10 } 11 return result; 12 }; 13 alert(arr1.sum()); 14 alert(arr2.sum());
这样既能alert出arr1的值,也能出来arr2的值~