JavaScript实现继承的混合方式
2014-11-07 08:37
756 查看
实现JavaScript继承的最简单的方式是call方法(或者apply方法)及原型链方法,但这两种方法都有缺陷,而其混合体就是很好的继承实现方式。下面举例说明:
function Animal(age){
this.age = age;
}
Animal.prototype.sayAge = function(){
window.alert("My age is "+this.age+"!");
};
function Dog(age,name){
Animal.call(this,age);
this.name = name;
}
Dog.prototype = new Animal();
Dog.prototype.sayName = function(){
window.alert("I am a "+this.name+"!");
};
var dog = new Dog(15,"dog");
dog.sayName();
dog.sayAge();
对于类Animal来说,它有一个字段属性age及函数属性sayAge,sayAge方法的定义采用的是原型方式。Dog类要继承Animal,其字段属性除了age外还有name,通过Animal.call(this,age);可以实现Dog继承Animal的字段属性age并将其初始化了。call方法的第一个参数为继承的类的this指针,第二个参数为Animal类的构造函数的参数。实际上,只是通过call方法就可以实现继承,但唯一的要求是父类的函数属性要在构造函数中定义,这对于这里的函数属性使用原型方式定义来说就不适合了(采用原型方式定义函数属性比在构造函数内定义更直观一些)。要想继承Animal的原型方式定义的函数属性,需要的语句就是“Dog.prototype = new Animal();”。而Dog类中的sayName()函数则是其自身的函数属性了。
除了这个最经典的实现继承的方式外,目前还有一些免费的库可供使用。但想到形形色色的库,头就大了,有时间有必要时再研究吧!
function Animal(age){
this.age = age;
}
Animal.prototype.sayAge = function(){
window.alert("My age is "+this.age+"!");
};
function Dog(age,name){
Animal.call(this,age);
this.name = name;
}
Dog.prototype = new Animal();
Dog.prototype.sayName = function(){
window.alert("I am a "+this.name+"!");
};
var dog = new Dog(15,"dog");
dog.sayName();
dog.sayAge();
对于类Animal来说,它有一个字段属性age及函数属性sayAge,sayAge方法的定义采用的是原型方式。Dog类要继承Animal,其字段属性除了age外还有name,通过Animal.call(this,age);可以实现Dog继承Animal的字段属性age并将其初始化了。call方法的第一个参数为继承的类的this指针,第二个参数为Animal类的构造函数的参数。实际上,只是通过call方法就可以实现继承,但唯一的要求是父类的函数属性要在构造函数中定义,这对于这里的函数属性使用原型方式定义来说就不适合了(采用原型方式定义函数属性比在构造函数内定义更直观一些)。要想继承Animal的原型方式定义的函数属性,需要的语句就是“Dog.prototype = new Animal();”。而Dog类中的sayName()函数则是其自身的函数属性了。
除了这个最经典的实现继承的方式外,目前还有一些免费的库可供使用。但想到形形色色的库,头就大了,有时间有必要时再研究吧!
相关文章推荐
- 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
- 使用混合方式实现javascript中对象的继承(推荐使用)
- JavaScript实现继承机制(4)——构造函数+原型链混合方式
- 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
- 面向对象的JavaScript 五 ----- Javascript实现继承的方式(2)
- 实现JavaScript中继承的三种方式
- javascript 继承实现方式
- 从继承方式的实现看javascript语言的设计初衷
- C#中实现多继承的方式:混合+接口
- javascript 继承实现方式
- JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
- 讲述Javascript 实现继承的方式(基础知识)
- javascript实现继承的几种方式(出自《四火的唠叨》)
- 实现JavaScript中继承的三种方式
- JavaScript面向对象的继承机制实现方式
- JavaScript继承实现方式一览 - winter-cn - 博客园
- JavaScript的弱类对象及继承实现方式
- [原]JavaScript必备知识系列-继承的实现方式
- javascript--继承(混合方式)
- javascript实现继承的方式