JavaScript面向对象特性实践一
javaScript 在构造类的时候有好几种方法,每种方法特点是不一样的。
1.构造/原型法

var BankCard=function(cardId,cardPassword)...{
this.cardId=cardId; //银行卡NO
this.cardPassword=cardPassword;// 银行卡密码
this.balance=100; //银行卡余额
}

BankCard.prototype=...{

queryBalance:function()...{
return this.balance;
},

setBalance:function(value)...{
this.balance=this.balance+value;
},

setPassword:function(password)...{
this.cardPassword=password;
}
}


function invoke(fun,value)...{
fun.setBalance(value);
balance=fun.queryBalance();
alert(balance);
}
//实例化一个银行卡对象
var objBankCard=new BankCard('admin','admin');
//传递对象引用,调用对象成员方法
invoke(objBankCard,200);


//-->
2.工厂方式

function BankCard(cardId,cardPassword,balance)...{
var objBankCard=new Object();
objBankCard.cardId=cardId;
objBankCard.cardPassword=cardPassword;
objBankCard.balance=balance;

objBankCard.queryBalance=function()...{
return this.balance;
};

objBankCard.setBalance=function(value)...{
this.balance=this.balance+value;
};

objBankCard.setPassword=function(password)...{
this.cardPassword=password;
};


return objBankCard;
}
var obj=new BankCard("admin","admin",100);
alert(obj.queryBalance());
3.构造函数方式

function BankCard(cardId,cardPassword,balance)...{
this.cardId=cardId;
this.cardPassword=cardPassword;
this.balance=balance;

this.queryBalance=function()...{
return this.balance;
};

this.setBalance=function(value)...{
this.balance=this.balance+value;
};

this.setPassword=function(password)...{
this.cardPassword=password;
};

}
var obj=new BankCard("admin","admin",100);
alert(obj.queryBalance());
4.原型方式
//原型方式

function BankCard()...{

}
BankCard.prototype.carId="admin";
BankCard.prototype.cardPassword="admin";
BankCard.prototype.balance=100;

BankCard.prototype.queryBalance = function()...{
return this.balance;
};

BankCard.prototype.setBalance = function(value)...{
this.balance=this.balance+value;
};

BankCard.prototype.setPassword = function(password)...{
this.cardPassword=password;
};
var obj=new BankCard();
alert(obj.queryBalance());
在日常的工作当中,推荐大家是由"构造/原型"法或"原型"法。