根据业务需求 自己写了一个继承类,分享一下 上面有注释
/**
* Class
* @author zhangliang
* @message 如果没有继承只传递一个参数即可,默认会取最后一个参数作为派生类
* @message 多个鸡肋: 第一个参数 传入{"person2": new person2(), "person3": new person3()}。
使用方法this.person3._init()
*/
function RClass () {
var baseClass = arguments.length > 1 ? arguments[0] : {} ;//解析鸡肋
var child = arguments[arguments.length-1];//最后一个参数为子类
var _class = function () {
for(var m in child) {
this[m] = child[m];
}
if (!this['_init']) {//构造函数不存在,建立构造函数
this['_init'] = function () {
var arg = [];
for(var i = 0, arglen = arguments.length; i < arglen; i++) {
arg[i] = arguments[i];//将参数以数组形式传递
}
this['arg'] = arg;
};
}
}
_class.prototype = baseClass;//鸡肋放入临时构造函数原型中
return _class;
};
var person1 = function () {//此处数据放在原型共享中
this.persondata = '123123';
this._getData = function () {
alert(this.persondata + 'person1=' + this.name);
}
}
var student = RClass(new person1(), {
_init: function () {
this.name = 'zhangliang';
},
_getData1: function () {
alert(this.name)
},
_setData: function (str) {
this.name = str;
}
});
var s = new student();
s._init();
//s._setData('zhanglixin');
s._getData();
//s.person_fun();