|
之前討論過(guò)JavaScript中的寫(xiě)類(lèi)方式。但沒(méi)有討論私有的實(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;
}
}上一頁(yè)寫(xiě)了個(gè)工具函數(shù)$class,這篇再完善以下。實(shí)現(xiàn)以下功能:
1,繼承
2,子類(lèi)繼承父類(lèi)時(shí),不繼承父類(lèi)的私有屬性
/**
* @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]);
}
it知識(shí)庫(kù):JavaScript 中實(shí)現(xiàn)私有屬性的寫(xiě)類(lèi)方式,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。