javascript继承小工具
2012-02-09 17:37
246 查看
这是YUI库的继承方案. 详见: 点击打开链接
<script type="text/javascript"> var Class = { extend:function(subClass,superClass){ var F = function(){}; F.prototype = superClass.prototype; subClass.prototype = new F(); subClass.prototype.constructor = subClass; subClass.superclass = superClass.prototype; if(superClass.prototype.constructor == Object.prototype.constructor) { superClass.prototype.constructor = superClass; } } /** * 调用父类的构造函数 * @param subClass 子类函数名 * @param subInstance 子类对象引用 */ ,callSuper:function(subClass,subInstance){ var argsArr = []; for(var i=2,len=arguments.length; i<len; i++) { argsArr.push(arguments[i]); } subClass.superclass.constructor.apply(subInstance, argsArr); } /** * 子类中调用父类的函数 * @param subClass 子类函数名 * @param subInstance 子类对象引用 * @param methodName 父类方法名 */ ,runSuperMethod:function(subClass,subInstance,methodName) { return subClass.superclass[methodName].call(subInstance); } }; // Demo // 声明父类 var Person = function(param){ this.name = param.name; this.age = param.age; } Person.prototype.sayName = function(){ alert("My name is " + this.name); } Person.prototype.sayAge = function(){ alert("My age is " + this.age); } Person.prototype.getAge = function(){ return this.age; } // 声明子类 var Man = function(param){ // 调用父类的构造函数 Class.callSuper(Man,this,param); } // 继承父类 Class.extend(Man,Person); // 覆盖父类的sayAge方法 Man.prototype.sayAge = function(){ alert(this.name + "'s age is " + this.age); } // 覆盖父类的方法,并且调用父类原来的方法 Man.prototype.getAge = function(){ // 先调用父类方法返回年龄 var age = Class.runSuperMethod(Man,this,'getAge'); // 年龄+1 alert(this.name + "'s age is " + (age + 1)); } // 测试 var man = new Man({name:"Jim",age:22}); man.sayName(); // 这里调用父类的方法 man.sayAge(); // 这里调用自己的方法 man.getAge(); </script>
相关文章推荐
- javascript 通用定义类继承工具方法
- JavaScript继承的一些工具函数
- javascript继承之工具函数一
- javascript继承之工具函数二
- javascript继承工具函数之三
- JavaScript继承的一些工具函数
- Javascript对象继承
- Javascript--原型链实现继承
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- JavaScript中基于类的继承
- 理解Javascript_05_原型继承原理
- javascript 继承
- Javascript面向对象编程(三):非构造函数的继承
- Javascript 设计模式——1.5 继承
- JavaScript对象及继承教程
- javascript 继承机制
- 关于javascript中的组合式继承
- Javascript制作浮动的工具条
- 分享15款很棒的 JavaScript 开发工具
- Javascript 类的继承