本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:varKlass=function(){}
本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:
var Klass = function() {};
Klass.extendClass = (function() {
var F = function() {};
return function(C, P) {
F.prototype = P.prototype;
C.prototype = new F();
C.uper = P.prototype;
C.prototype.constructor = C;
};
})();
Klass.extend = function(props) {
var _slice = Array.prototype.slice;
var Glass = function() {
/*if (Glass.uper && Glass.uper.hasOwnProperty("init")) {
Glass.uper.init.apply(this, _slice.call(arguments))
}*/
if (Glass.prototype.hasOwnProperty("init")) {
Glass.prototype.init.apply(this, _slice.call(arguments));
}
};
Klass.extendClass(Glass, this);
Glass.extend = this.extend;
for (var key in props) {
if (props.hasOwnProperty(key)) {
Glass.prototype[key] = props[key];
}
}
return Glass;
};
example:
var A = Klass.extend({
init: function(name) {
this.name = name;
console.log('A constructor is running!');
},
getName: function() {
return this.name;
}
});
var B = A.extend({
init: function(name) {
this.name = name;
console.log('B constructor is running!');
},
getName: function() {
return this.name;
},
a: 'b'
});
var C = B.extend({
init: function(name) {
console.log('C constructor is running!');
},
c: 'c',
getName: function() {
var name = C.uper.getName.call(this);
return 'Hi, I\'m' + this.name;
}
});
var c1 = new C('zlf');
console.log(c1.getName());
JS
Base.js
继承