码迷,mamicode.com
首页 > Web开发 > 详细

JS组合继承的通用工具函数

时间:2014-05-10 04:22:07      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:blog   class   code   java   ext   c   

此工具函数没实际意义,只是鉴于EXT的extend方法不太好理解,写了一个简化的extend方法,帮助理解.

/**
 * 
 */
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 < len; i++) {
		_proto.p[i] = function() {
			throw new Error(‘no implements function‘);
		};
	}
	return new Interface();
};


Test

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();



JS组合继承的通用工具函数,布布扣,bubuko.com

JS组合继承的通用工具函数

标签:blog   class   code   java   ext   c   

原文地址:http://blog.csdn.net/songzheng_741/article/details/25425337

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!