Javascript 实现继承的三种方式
2015-01-07 22:10
585 查看
Javascript实现继承的三种方式:
1.使用apply
结果是:
![](http://img.blog.csdn.net/20150107221254243?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWZhbmRhYWZhbmRhYWZhbmRh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.使用call方式
结果:
![](http://img.blog.csdn.net/20150107221451805?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWZhbmRhYWZhbmRhYWZhbmRh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.使用property重定向
结果是:
![](http://img.blog.csdn.net/20150107221254243?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWZhbmRhYWZhbmRhYWZhbmRh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
整个例子代码如下:
Note:call和apply的区别在于传递参数的方式不同而已,apply的第二个参数是一个参数的数组,而call是逐个传参数。
1.使用apply
function Animal() { this.type = "动物"; } function Cat(name, age) { Animal.apply(this, arguments); this.name = name; this.age = age; } var cat1 = new Cat("justin", 3); alert(cat1.type);
结果是:
2.使用call方式
function Employee(name, age) { this.name = name; this.age = age; } function SuperEmployee(name, age, salary) { Employee.call(this, name, age); this.salary = salary; } var se = new SuperEmployee("justin", 25, 1000); alert(se.name + se.age + se.salary);
结果:
3.使用property重定向
Cat.property = new Animal(); alert(Cat.property.constructor); Cat.property.constructor = Cat alert(Cat.property.constructor); var cat2 = new Cat("dustin", 4); alert(cat2.type);
结果是:
整个例子代码如下:
<script type="text/javascript"> function Animal() { this.type = "动物"; } function Cat(name, age) { Animal.apply(this, arguments); this.name = name; this.age = age; } var cat1 = new Cat("justin", 3); alert(cat1.type); Cat.property = new Animal(); alert(Cat.property.constructor); Cat.property.constructor = Cat alert(Cat.property.constructor); var cat2 = new Cat("dustin", 4); alert(cat2.type); function Employee(name, age) { this.name = name; this.age = age; } function SuperEmployee(name, age, salary) { Employee.call(this, name, age); this.salary = salary; } var se = new SuperEmployee("justin", 25, 1000); alert(se.name + se.age + se.salary); </script>
Note:call和apply的区别在于传递参数的方式不同而已,apply的第二个参数是一个参数的数组,而call是逐个传参数。
相关文章推荐
- JavaScript面向对象(三)——继承与闭包、JS实现继承的三种方式
- 实现JavaScript中继承的三种方式
- 实现JavaScript中继承的三种方式
- JavaScript中实现继承的三种方式和实例
- 实现JavaScript中继承的三种方式
- 实现JavaScript中继承的三种方式
- 实现JavaScript中继承的三种方式
- JavaScript中实现继承的三种方式和实例
- 实现JavaScript中继承的三种方式
- javascript中实现继承的三种方式(一看就懂)
- 实现JavaScript中继承的三种方式
- ASP.NET MVC2中三种ajax实现方式-原始JavaScript
- javascript实现继承的几种方式(出自《四火的唠叨》)
- JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
- 使用混合方式实现javascript中对象的继承(推荐使用)
- 绑定Service的三种实现方式之继承Binder类
- javascript 继承实现方式
- 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
- 讲述Javascript 实现继承的方式(基础知识)
- 从继承方式的实现看javascript语言的设计初衷