首页 > 代码库 > JavaScript类继承实现之一
JavaScript类继承实现之一
网上各博客论坛出现了很多JavaScript的类继承方法,浏览了一些,不是没注释,就是没有运行效果,于是自己写了个简洁易懂的版本,附带测试代码在最下面。
刚不小心删除了该文章,因此重新补上,另外加强了示例。
(function() {
Function.prototype.extend = function(baseClass) {// this is a function object.
var oldPrototype = this.prototype, newPrototype = {}, _super = new baseClass();
//inherits all properties and methods.
for ( var name in _super) {
newPrototype[name] = _super[name];
}
for ( var name in oldPrototype) {
// only override properties in this new Class.
if (oldPrototype.hasOwnProperty(name)) {
// only function need _super.
if (typeof oldPrototype[name] == "function" && typeof _super[name] == "function") {
newPrototype[name] = (function(name, fn) {
return function() {
var tmp = this._super;
// set super method
this._super = _super[name];
var ret = fn.apply(this, arguments);
this._super = tmp;
return ret;
};
})(name, oldPrototype[name]);
}
}
}
this.prototype = newPrototype;
return this;
};
})();
var A = function() {
this.hello = function() {
console.log("hello, I‘m A");
}
};
var B = function() {};
B.prototype = {
hello : function() {
this._super();
console.log("hello, I‘m B");
}
};
B.extend(A);
var C = function() {};
C.prototype = {
hello : function() {
this._super();
console.log("hello, I‘m C");
}
};
C.extend(B);
var b = new B();
var c = new C();
//b.hello();
c.hello();
JavaScript类继承实现之一
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。