本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:
rush: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:
rush:js;">
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());
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
原文地址:https://www.jb51.cc/js/40144.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。