当前位置:编程学习 > JAVA >>

JavaScript继承方式(4)

4,继承工具函数四

view sourceprint?01 /** 

02  * @param {String} className 

03  * @param {String/Function} superClass 

04  * @param {Function} classImp 

05  */

06 function $class(className, superClass, classImp){ 

07     if(superClass === "") superClass = Object; 

08     var clazz = function(){ 

09         return function(){ 

10             if(typeof this.init == "function"){ 

11                 this.init.apply(this, arguments); 

12             } 

13         }; 

14     }(); 

15     var p = clazz.prototype = new superClass(); 

16     var _super = superClass.prototype; 

17     window[className] = clazz; 

18     classImp.apply(p, [_super]); 

19 }

定义父类Person

view sourceprint?01 /** 

02  * 父类 Person 

03  */

04 $class(Person,,function(){ 

05     this.init = function(name){ 

06         this.name = name; 

07     }; 

08     this.getName = function(){ 

09         return this.name; 

10     }; 

11     this.setName = function(name){ 

12         this.name = name; 

13     } 

14 });

子类Man

view sourceprint?01 /** 

02  * 子类 Man 

03  */

04 $class(Man, Person, function(supr){ 

05     this.init = function(name, age){ 

06         supr.init.apply(this,[name]); // 该句很重要 

07         this.age = age; 

08     }; 

09     this.getAge = function(){ 

10         return this.age; 

11     }; 

12     this.setAge = function(age){ 

13         this.age = age; 

14     }; 

15 }); 

16 var m = new Man(Jack,25); 

17 console.log(m.name); // Jack 

18 console.log(m.age); // 25

从输出看可以看到子类Man的确继承了父类的属性和方法

补充:web前端 , JavaScript ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,