Javascript 继承机制和构造方法链实现
2010-02-28 10:27
741 查看
首先是我们熟悉的extend函数
接下来继承函数
测试代码
以上实现了继承,多态,重载,和完整的构造体方法链。
/** * 扩展函数 * @param target 扩展对象 * @param params 扩展参数 */ function extend(target, params) { if (!target) { target = {}; } for (var prop in params) { target[prop] = params[prop]; } return target; }
接下来继承函数
/** * 继承函数 * @param SuperClass 父类 * @param overrides 重写方法 */ function extendClass(SuperClass, overrides) { var SubClass = function() { // 自动调用构造函数 this.initialize.apply(this, arguments); }; SubClass.prototype = new SuperClass(); extend(SubClass.prototype, overrides); SubClass.superclass = SuperClass; return SubClass; }
测试代码
var Animal = extendClass(Object, { initialize: function(name){ this.name = name; }, showName: function(){ alert(this.name); } }); var Cat = extendClass(Animal, { initialize: function(name) { // 调用父类构造函数 Cat.superclass.prototype.initialize.call(this, name); } }); var BlackCat = extendClass(Cat, { initialize: function(name, type) { // 调用父类构造函数 BlackCat.superclass.prototype.initialize.call(this, name); this.type = type; }, showType: function() { alert(this.type); }, showName: function() { alert(this.name + ":" + this.type); } }); var cat = new Cat("cat name"); // 继承方法 cat.showName(); // true alert(cat instanceof Animal); // true alert(cat instanceof Cat); // false alert(cat instanceof BlackCat); var blackCat = new BlackCat("123", "black"); // 方法重写 blackCat.showName(); // 自有方法 blackCat.showType(); // true alert(blackCat instanceof Animal); // true alert(blackCat instanceof Cat); // true alert(blackCat instanceof BlackCat);
以上实现了继承,多态,重载,和完整的构造体方法链。
相关文章推荐
- Javascript 继承机制和构造方法链实现(原)
- JavaScript 继承机制的实现(待续)
- Javascript 继承机制的实现
- Javascript继承机制的实现
- 基于JavaScript实现继承机制之原型链(prototype chaining)的详解
- 基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
- 基于JavaScript实现继承机制之原型链(prototype chaining)的详解
- JavaScript实现继承机制(1)—— 构造函数方法对象冒充
- javascript基础6-对象继承机制实现
- JavaScript中的继承机制的实现
- JavaScript简洁继承机制实现(不使用prototype和new)
- ECMAScript(JavaScript) 继承机制实现
- JavaScript实现继承机制(2)——调用call()与apply()方法
- javascript继承机制的实现
- 基于JavaScript实现继承机制之原型链(prototype chaining)的详解
- 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
- JavaScript继承机制的实现(未完)
- Javascript 继承机制的实现
- 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
- JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式