JavaScript 實(shí)現(xiàn)類的多種方法實(shí)例
構(gòu)造方法
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = 'Web 開(kāi)發(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();
工廠方法和構(gòu)造方法都有著一個(gè)相同的缺點(diǎn),就是每創(chuàng)建一個(gè)實(shí)例,都會(huì)實(shí)例化該類的每個(gè)函數(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();
原型鏈有個(gè)缺點(diǎn)就是它所有屬性都共享,只要一個(gè)實(shí)例改變其他的都會(huì)跟著改變。如:
var coder1 = new coder();
var coder2 = new coder();
alert(coder1.name); /*顯示現(xiàn)代魔法*/
coder2.name = 'nowamagic';
alert(coder1.name); /*顯示nowamagic*/
alert(coder2.name); /*這個(gè)也顯示nowamagic*/
混合方式
以上三種都有著各自的缺點(diǎn),所以我們要加以改進(jìn)。
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = '程序員';
}
coder.prototype.coding = function(){
alert('我正在寫代碼');
};
動(dòng)態(tài)原鏈
要解決前三種的缺點(diǎn),還有一種方法。
function coder()
{
this.name = '現(xiàn)代魔法';
this.job = '程序員';
if (typeof(coder._init) == 'undefined')
{
this.coding = function ()
{
alert('我正在寫代碼');
};
this._init = true;
}
}
- Js類的靜態(tài)方法與實(shí)例方法區(qū)分及jQuery拓展的兩種方法
- JavaScript面向?qū)ο笾接徐o態(tài)變量實(shí)例分析
- js靜態(tài)方法與實(shí)例方法分析
- JavaScript創(chuàng)建類/對(duì)象的幾種方式概述及實(shí)例
- javascript定義類和類的實(shí)現(xiàn)實(shí)例詳解
- JavaScript中的類與實(shí)例實(shí)現(xiàn)方法
- 淺談js函數(shù)中的實(shí)例對(duì)象、類對(duì)象、局部變量(局部函數(shù))
- JavaScript類繼承及實(shí)例化的方法
- JS中類的靜態(tài)方法,靜態(tài)變量,實(shí)例方法,實(shí)例變量區(qū)別與用法實(shí)例分析
相關(guān)文章
js實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證詳解
本文給大家分享一段超級(jí)全面的二代身份證號(hào)碼驗(yàn)證程序,由JS編寫而成,可以校驗(yàn)身份證的地址碼、出生日期碼、順序碼和數(shù)字校驗(yàn)碼。是身份證去偽存真的一大利器。2014-11-11laydate如何根據(jù)開(kāi)始時(shí)間或者結(jié)束時(shí)間限制范圍
這篇文章主要為大家詳細(xì)介紹了laydate根據(jù)開(kāi)始時(shí)間或者結(jié)束時(shí)間限制范圍的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11javascript 實(shí)現(xiàn)子父窗體互相傳值的簡(jiǎn)單實(shí)例
本篇文章主要是對(duì)javascript 實(shí)現(xiàn)子父窗體互相傳值的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02微信小程序?qū)崿F(xiàn)流程進(jìn)度的圖樣式功能
最近正在做微信小程序,需要實(shí)現(xiàn)一個(gè)流程進(jìn)度的圖樣式,下面小編給大家?guī)?lái)了微信小程序?qū)崿F(xiàn)流程進(jìn)度的圖樣式功能實(shí)例代碼,需要的朋友參考下吧2018-01-01Bootstrap實(shí)現(xiàn)下拉菜單多級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Bootstrap實(shí)現(xiàn)下拉菜單多級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11javascript獲取select的當(dāng)前值示例代碼(兼容IE/Firefox/Opera/Chrome)
本篇文章主要介紹了javascript獲取select的當(dāng)前值示例代碼(兼容IE/Firefox/Opera/Chrome) 需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12Javascript函數(shù)緩存的實(shí)現(xiàn)及應(yīng)用場(chǎng)景
Javascript函數(shù)緩存是一種提高網(wǎng)頁(yè)性能的重要技術(shù),通過(guò)將函數(shù)結(jié)果存儲(chǔ)在緩存中,避免重復(fù)計(jì)算,從而提高頁(yè)面加載速度和響應(yīng)速度,本文主要介紹了Javascript函數(shù)緩存的實(shí)現(xiàn)及應(yīng)用場(chǎng)景,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12JS圖片延遲加載插件LazyImgv1.0用法分析【附demo源碼下載】
這篇文章主要介紹了JS圖片延遲加載插件LazyImgv1.0用法,結(jié)合實(shí)例形式分析了使用圖片延遲加載插件LazyImgv1.0的注意事項(xiàng)與核心操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09