JavaScript 實現(xiàn)類的多種方法實例
更新時間:2013年05月01日 14:30:27 作者:
JavaScript 實現(xiàn)類的多種方法實例,需要的朋友可以參考一下
構造方法
復制代碼 代碼如下:
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = 'Web 開發(fā)者';
this.coding = function ()
{ alert('我正在寫代碼'); }
}
var coder = new coder();
alert(coder.name);
coder.coding();
工廠方法
復制代碼 代碼如下:
function createCoderFactory()
{
var obj = new Object();
obj.name = '現(xiàn)代魔法';
obj.job = '程序員';
obj.coding = function ()
{
alert('我正在寫代碼');
};
return obj;
}
var coder = createCoderFactory();
alert(coder.name);
coder.coding();
工廠方法和構造方法都有著一個相同的缺點,就是每創(chuàng)建一個實例,都會實例化該類的每個函數(shù)。
原型鏈
復制代碼 代碼如下:
function coder(){}
coder.prototype.name = '現(xiàn)代魔法';
coder.prototype.job = '程序員';
coder.prototype.coding = function(){
alert('我正在寫代碼');
};
var coder = new coder();
alert(coder.name);
coder.coding();
原型鏈有個缺點就是它所有屬性都共享,只要一個實例改變其他的都會跟著改變。如:
復制代碼 代碼如下:
var coder1 = new coder();
var coder2 = new coder();
alert(coder1.name); /*顯示現(xiàn)代魔法*/
coder2.name = 'nowamagic';
alert(coder1.name); /*顯示nowamagic*/
alert(coder2.name); /*這個也顯示nowamagic*/
混合方式
以上三種都有著各自的缺點,所以我們要加以改進。
復制代碼 代碼如下:
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = '程序員';
}
coder.prototype.coding = function(){
alert('我正在寫代碼');
};
動態(tài)原鏈
要解決前三種的缺點,還有一種方法。
復制代碼 代碼如下:
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = '程序員';
if (typeof(coder._init) == 'undefined')
{
this.coding = function ()
{
alert('我正在寫代碼');
};
this._init = true;
}
}
相關文章
javascript使用中為什么10..toString()正常而10.toString()出錯呢
在JavaScript中為什么10..toString()正常,而10.toString()出錯呢?這個問題一直困擾著我,所抽時間搜集整理下,曬出來與大家分享感興趣的朋友可以了解下,希望對你們有幫助2013-01-01
BootStrap智能表單實戰(zhàn)系列(三)分塊表單配置詳解
這篇文章主要介紹了BootStrap智能表單實戰(zhàn)系列(三)分塊表單配置詳解的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06
用JS操作FRAME中的IFRAME及其內(nèi)容的實現(xiàn)代碼
一直都需要這樣的東西,發(fā)現(xiàn)了這個好東西,一定要研究下2008-07-07

