上一篇写了个工具函数$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]);
}
先写个父类
/**
* 父类 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;
};
});