第一种
这种方式有非常大的弊端,就是每次都要新建一个对象,然后添加属性、方法,会产生大量重复代码。
var group = new Object();
group.arr = [11,23,22,13,45,23,43,10];
group.sums = function(){
var sum = 0;
var x;
// for(var i = 0; i < group.arr.length; i++){
// sum += group.arr[i]
// }
for(x in group.arr){
sum += group.arr[x]
}
console.log('普通函数',sum)
}
group.sums()
第二种:工厂模式
工厂模式,外部创建一个函数,里面创建一个对象。记得return 对象。
function createGroup(muster){
var o = new Object()
o.muster = muster;
o.createSum = function(){
var sum = 0;
var x;
for(x in this.muster){
sum += this.muster[x]
}
console.log('工厂模式',sum);
}
return o; // 记得return o
}
arr = [11,23,22,13,45,23,43,10];
var group1 = createGroup(arr);
group1.createSum()
第三种:构造函数模式
构造函数模式,外部创建一个函数,里面以this的形式。调用记得加new
function createGroup2(muster2){
this.muster2 = muster2;
this.createSum2 = function(){
var sum = 0;
var x;
for(x in this.muster2){
sum += this.muster2[x];
}
console.log('构造函数模式',sum);
}
}
arr2 = [11,23,22,13,45,23,43,10];
var group2 = new createGroup2(arr2);
group2.createSum2()
第四种:原型模式
function createGroup3(muster3){
this.muster3 = muster3;
}
createGroup3.prototype.sum = function(){
var sum = 0;
var x;
for(x in this.muster3){
sum += this.muster3[x];
}
console.log('原型模式', sum)
}
arr3 = [11,23,22,13,45,23,43,10];
var group3 = new createGroup3(arr3);
group3.sum();
第五种:组合使用构造函数模式和原型模式
function createGroup4(muster4){
this.muster4 = muster4;
}
createGroup4.prototype = {
constructor:createGroup4,
sum:function(){
var sum = 0;
var x;
for(x in this.muster4){
sum += this.muster4[x];
}
console.log('组合使用构造函数模式和原型模式', sum)
}
}
arr4 = [11,23,22,13,45,23,43,10];
var group4 = new createGroup4(arr4);
group4.sum();
第六种:
简单粗暴地理解js原型链--js面向对象编程(转载)
http://www.cnblogs.com/qieguo/p/5451626.html
网友评论