javaScript 利用閉包模擬對(duì)象的私有屬性
var myObject=function(value){
var value=value || 0;
return{
increment:function(num){
value+=typeof num==='number' ? num : 0;
},
setValue:function(num){
value = typeof num==='number' ? num : value;
},
getValue:function(){
return value;
}
}
}(10)
//alert(myObject.getValue()); //10
myObject.setValue(20);
//alert(myObject.getValue()); //20
myObject.increment(5);
alert(myObject.getValue()); //25
如上例中,myObjeact是匿名函數(shù)執(zhí)行后返回的對(duì)象。匿名函數(shù)中變量value對(duì)于匿名函數(shù)外部來(lái)說(shuō)是不可訪問(wèn)的,但對(duì)于其內(nèi)部的函數(shù),是可以訪問(wèn)的,匿名函數(shù)執(zhí)行結(jié)束,由于變量value仍被返回的myObject對(duì)象所存取,故value所占據(jù)的內(nèi)存并沒(méi)有被銷(xiāo)毀。此時(shí),內(nèi)部的變量value就如同myObject對(duì)象的私有變量一樣。
var myObject=function(value){
var name='MyObject';
return{
increment:function(num){
value+=typeof num==='number' ? num : 0;
},
setValue:function(num){
value = typeof num==='number' ? num : value;
},
getValue:function(){
//alert(this);
return value;
},
getName:function(){
return name;
},
setName:function(nameStr){
name=nameStr;
},
toString:function(){
return '[Object:'+name+']';
}
}
}
var obj=myObject(5);
obj.increment(6);
//alert(obj.getValue()); // 11
//alert(obj); //[Object:MyObject]
obj.setName('temp object 01');
alert(obj) //[Object:temp object 01]
- js類中的公有變量和私有變量
- javascript入門(mén)基礎(chǔ)之私有變量
- javascript 動(dòng)態(tài)生成私有變量訪問(wèn)器
- JavaScript 模擬類機(jī)制及私有變量的方法及思路
- 深入理解JavaScript中的塊級(jí)作用域、私有變量與模塊模式
- JavaScript面向?qū)ο笾接徐o態(tài)變量實(shí)例分析
- js面向?qū)ο笾?、私有、靜態(tài)屬性和方法詳解
- js基礎(chǔ)知識(shí)(公有方法、私有方法、特權(quán)方法)
- Javascript 構(gòu)造函數(shù),公有,私有特權(quán)和靜態(tài)成員定義方法
- JavaScript私有變量實(shí)例詳解
相關(guān)文章
javascript自定義右鍵彈出菜單實(shí)現(xiàn)方法
這篇文章主要介紹了javascript自定義右鍵彈出菜單實(shí)現(xiàn)方法,涉及javascript操作鼠標(biāo)事件及頁(yè)面元素的相關(guān)技巧,需要的朋友可以參考下2015-05-05有關(guān)suggest快速刪除后仍然出現(xiàn)下拉列表的bug問(wèn)題
寫(xiě)suggest的時(shí)候,有時(shí)我們快速刪除輸入框的文字后,但是suggest下拉列表還有出現(xiàn),導(dǎo)致的原因是因?yàn)閍jax異步請(qǐng)求造成的,下面通過(guò)本文給大家分享下解決方法,感興趣的朋友一起看看2016-12-12JavaScript實(shí)現(xiàn)的鏈表數(shù)據(jù)結(jié)構(gòu)實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的鏈表數(shù)據(jù)結(jié)構(gòu)實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04簡(jiǎn)單了解JavaScript中常見(jiàn)的反模式
這篇文章主要介紹了簡(jiǎn)單了解JavaScript中常見(jiàn)的反模式,反模式 是指對(duì)反復(fù)出現(xiàn)的設(shè)計(jì)問(wèn)題的常見(jiàn)的無(wú)力而低效的設(shè)計(jì)模式,俗話說(shuō)就是重蹈覆轍。 這篇文章描述了 JavaScript 中常見(jiàn)的一些反模式,以及避免它們的辦法。,需要的朋友可以參考下2019-06-06超好玩js頁(yè)面效果之實(shí)現(xiàn)數(shù)值的動(dòng)態(tài)變化
這篇文章主要給大家介紹了關(guān)于超好玩js頁(yè)面效果之實(shí)現(xiàn)數(shù)值的動(dòng)態(tài)變化的相關(guān)資料,文中通過(guò)示例代碼及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-10-10js 方法實(shí)現(xiàn)返回多個(gè)數(shù)據(jù)的代碼
2009-04-04JavaScript程序設(shè)計(jì)之JS調(diào)試
這篇文章主要介紹了JavaScript程序設(shè)計(jì)中的重要環(huán)節(jié):JS調(diào)試,本文通過(guò)一個(gè)加法器,介紹JS如何調(diào)試,感興趣的小伙伴們可以參考一下2015-12-12js給對(duì)象動(dòng)態(tài)添加、設(shè)置、刪除屬性名與屬性值實(shí)例代碼
由于項(xiàng)目需要常常會(huì)遇到為某一個(gè)對(duì)象動(dòng)態(tài)添加屬性的情況,下面這篇文章主要給大家介紹了關(guān)于js給對(duì)象動(dòng)態(tài)添加、設(shè)置、刪除屬性名與屬性值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11