如何在JavaScript中實(shí)現(xiàn)私有屬性的寫類方式(一)
之前討論過JavaScript中的寫類方式。但沒有討論私有的實(shí)現(xiàn)。這篇看下。
我們知道JS中私有屬性的實(shí)現(xiàn)本質(zhì)就是 var + closure。如下
function Person(n, a){
// public
this.name = n;
// private
var age = a;
this.getName = function(){
return this.name;
}
this.getAge = function(){
return age;
}
}
測試如下,age是私有的,使用點(diǎn)操作符無法獲取到,而只能使用getName方法。
var p = new Person('jack',23);
console.log(p.age); // undefined
console.log(p.getAge()); // 23
以上沒什么稀奇的,下面我們使用一個(gè)工具函數(shù)來實(shí)現(xiàn)。
/**
* @param {String} className
* @param {Function} classImp
*/
function $class(className, classImp){
function clazz(){
if(typeof this.init == "function"){
this.init.apply(this, arguments);
}
}
classImp.call(clazz.prototype);
window[className] = clazz;
}
寫一個(gè)類
$class('Person', function(){
// 私有屬性都定義在這
var age = '';
this.init = function(n, a){
// 共有屬性掛在this上,初始化
this.name = n;
// 私有屬性初始化
age = a;
};
this.getName = function(){
return this.name;
};
this.getAge = function(){
return age;
}
});
new一個(gè)實(shí)例對(duì)象
var p = new Person('jack',23);
console.log(p.name); // jack 共有的可使用點(diǎn)操作符獲取
console.log(p.age); // undefined 私有的不能通過點(diǎn)操作符獲取
console.log(p.getAge()); // 23 私有的age只能通過共有的方法getAge獲取
- Javascript 構(gòu)造函數(shù),公有,私有特權(quán)和靜態(tài)成員定義方法
- javascript中定義私有方法說明(private method)
- JavaScript 模擬類機(jī)制及私有變量的方法及思路
- JavaScript中的私有/靜態(tài)屬性介紹
- Javascript 面向?qū)ο螅ㄒ唬?共有方法,私有方法,特權(quán)方法)
- Javascript類定義語法,私有成員、受保護(hù)成員、靜態(tài)成員等介紹
- Javascript面象對(duì)象成員、共享成員變量實(shí)驗(yàn)
- JavaScript 面向?qū)ο蟮?私有成員和公開成員
- JavaScript 面向?qū)ο蟮闹接谐蓡T和公開成員
- JavaScript 私有成員分析
- JavaScript中的私有成員
- JavaScript中的公有、私有、特權(quán)和靜態(tài)成員用法分析
相關(guān)文章
微信小程序和公眾號(hào)實(shí)現(xiàn)簽到頁面
這篇文章主要為大家詳細(xì)介紹了微信小程序和公眾號(hào)實(shí)現(xiàn)簽到頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08JavaScript實(shí)現(xiàn)echarts水球圖百分比展示大屏可視化
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)echarts水球圖百分比展示大屏可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10js 動(dòng)態(tài)創(chuàng)建 html元素
最近在學(xué)習(xí)js 寫了個(gè)簡單的效果,菜鳥可以學(xué)習(xí)學(xué)習(xí),基本原理:使用隨即數(shù)設(shè)置top 和left的值,2009-07-07使用Curl命令查看請(qǐng)求響應(yīng)時(shí)間方法
curl命令查看請(qǐng)求響應(yīng)時(shí)間的方法非常簡單,今天小編抽空給大家介紹下使用Curl命令查看請(qǐng)求響應(yīng)時(shí)間方法,感興趣的朋友一起看看吧2016-11-11JavaScript實(shí)現(xiàn)節(jié)點(diǎn)的刪除與序號(hào)重建實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)節(jié)點(diǎn)的刪除與序號(hào)重建方法,涉及javascript針對(duì)頁面節(jié)點(diǎn)的刪除與遍歷技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-08-08mpvue微信小程序多列選擇器用法之省份城市選擇的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于mpvue微信小程序多列選擇器用法之省份城市選擇實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03