JS组合继承的通用工具函数
2020-12-13 02:44
标签:blog class code java ext c 此工具函数没实际意义,只是鉴于EXT的extend方法不太好理解,写了一个简化的extend方法,帮助理解.
JS组合继承的通用工具函数,搜素材,soscw.com JS组合继承的通用工具函数 标签:blog class code java ext c 原文地址:http://blog.csdn.net/songzheng_741/article/details/25425337/**
*
*/
E = {};
E.extend = function(sub, sup) {
//借用构造函数
sub.prototype = sup;
//保留父类的构造函数,以便在子类构造函数中用调用,将父类变量绑定在this下
sub.prototype.superclass = sup.constructor;
//因为重写了构造函数所以重新指定constructor,以使instanceof表现正常
sub.prototype.constructor = sub;
//因为已经将变量绑定到子类上,所以删除原型上被覆盖的变量
for (var i in sup) {
if (typeof sup[i] !== ‘function‘) {
delete sup[i];
}
}
return sub;
};
E.InterfaceFactory = {};
E.InterfaceFactory.createInterface = function(methods) {
var Interface = function() {};
var f = typeof arguments[0] === ‘string‘;
var p = f ? arguments : arguments[0];
var len = p.length;
var _proto = Interface.prototype = {};
for (var i = 0; i
var Person = function(name) {
this.name = name;
}
Person.prototype.say = function () {
alert(‘I am ‘ + this.name);
}
var SS = function(name, age) {
this.superclass.call(this,name);
this.age = age;
}
SS = E.extend(SS, new Person(‘sz‘));
var s = new SS(‘xx‘, 11);
s.say();