如何在JavaScript中實現(xiàn)私有屬性的寫類方式(二)
更新時間:2013年12月04日 09:06:16 作者:
這篇文章主要介紹了如何在JavaScript中實現(xiàn)私有屬性的寫類方式。需要的朋友可以過來參考下,希望對大家有所幫助
上一篇寫了個工具函數(shù)$class,這篇再完善以下。實現(xiàn)以下功能
1,繼承
2,子類繼承父類時,不繼承父類的私有屬性
復(fù)制代碼 代碼如下:
/**
* @param {String} className
* @param {String/Function} superCls
* @param {Function} classImp
*/
function $class(className, superCls, classImp){
if(superCls === '') superCls = Object;
function clazz(){
if(typeof this.init == "function"){
this.init.apply(this, arguments);
}
}
var p = clazz.prototype = new superCls();
var _super = superCls.prototype;
window[className] = clazz;
classImp.apply(p, [_super]);
}
先寫個父類
復(fù)制代碼 代碼如下:
/**
* 父類 Person
*/
$class('Person','',function(){
// 私有屬性age
var age;
this.init = function(n, a){
// 公有屬性name
this.name = n;
// 私有屬性初始化
age = a;
};
this.getName = function(){
return this.name;
};
this.setName = function(name){
this.name = name;
}
this.getAge = function(){
return age;
};
this.setAge = function(a){
age = a;
};
});
寫子類,繼承于Person
復(fù)制代碼 代碼如下:
$class("Man",Person, function(supr){
var school;
this.init = function(n, a, s){
supr.init.apply(this, [n,a]);
school = s;
}
this.getSchool = function(){
return school;
};
this.setSchool = function(s){
school = s;
};
});
new一個子類實例
復(fù)制代碼 代碼如下:
var m = new Man('tom', 25, 'pku');
console.log(m.name); // tom 繼承父類的共有屬性name可以直接使用點操作符獲取
console.log(m.age); // undefined 父類的私有屬性age不能直接使用點操作符獲取
console.log(m.getAge()); // 25 可通過父類的共有方法getAge獲取私有屬性age
console.log(m.school); // undefined Man自己的私有屬性仍然不能通過點操作符獲取
console.log(m.getSchool()); // pku 通過getSchool()方法獲取私有屬性school
您可能感興趣的文章:
相關(guān)文章
javascript KeyDown、KeyPress和KeyUp事件的區(qū)別與聯(lián)系
KeyDown、KeyPress和KeyUp事件的區(qū)別與聯(lián)系,以后就可以根據(jù)需求來選擇使用。2009-12-12
在TypeScript項目中搭配Axios封裝后端接口調(diào)用
這篇文章主要介紹了在TypeScript項目中搭配Axios封裝后端接口調(diào)用,本文記錄一下在?TypeScript?項目里封裝?axios?的過程,之前在開發(fā)?StarBlog-Admin?的時候已經(jīng)做了一次封裝,不過那時是JavaScript跟TypeScript還是有些區(qū)別的,需要的朋友可以參考下2024-01-01
uni-app動態(tài)修改導(dǎo)航欄標(biāo)題簡單步驟
uniapp作為一款開源軟件,可以做到一端多用,不過也有局限,在開發(fā)中有時候需要動態(tài)的去修改標(biāo)題,下面這篇文章主要給大家介紹了關(guān)于uni-app動態(tài)修改導(dǎo)航欄標(biāo)題的相關(guān)資料,需要的朋友可以參考下2023-06-06

