|
之前討論過JavaScript中的寫類方式。但沒有討論私有的實現。這篇看下。
我們知道JS中私有屬性的實現本質就是 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;
}
}上一頁寫了個工具函數$class,這篇再完善以下。實現以下功能:
1,繼承
2,子類繼承父類時,不繼承父類的私有屬性
/**
* @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知識庫:JavaScript 中實現私有屬性的寫類方式,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。