JS中继承机制的三种方法
来源:互联网 发布:淘宝上的面膜能不能买 编辑:程序博客网 时间:2024/06/06 08:56
1.构造继承法
构造继承法是使用了function对象的call()和apply()方法
call的第一个参数用作this对象,其余参数是传给函数的参数.
function A(sName){ this.name = sName; this.sayName = function(){ alert(this.name); }}function B(sName,sAge){ A.call(this,sName); this.age = sAge; this.sayAge = function(){ alert(this.age); }}
这样,B内部调用了A的构造函数,从而实现了对A的继承,
apply用法基本与call相同,不同的是apply方法只有两个参数,第一个用作this对象,第二个参数是要传给构造函数的参数 数组.
!注 用prototype独享定义的属性和方法时不能用这种方法继承的.
2.原型链
prototype对象的任何属性和方法都被传递给那个类的所有实例.原型链正是利用这种功能来实现继承机制.
function A(){}A.prototype.color = "pink";A.prototype.sayColor = function(){ alert(this.color);}function B(){}B.prototype = new A();B.prototype.name = "";B.prototype.sayName = function(){ alert(this.name);}
因为任何一个类只能由一个原型对象,所以原型链弊端是不支持多重继承,而且,原型链会以另一类型的对象重写类的prototype属性.
3.混合模式
此方法思想是使用构造继承法继承属性,而用原型链继承法继承方法.
function A(sname){ this.name = sName;}A.prototype.sayName = function(){ alert(this.name);}function B(sName,sAge){ A.call(this,sName) this.sge = sAge;}B.prototype = new A();B.prototype.sayAge = function(){ alert(this.age);}
!注 不能用动态原型方法实现继承,因为它会先创建对象实例,认购改变原型.这样会使第一个创建的对象实例无法看到这种改变,但之后的对象实例可以反映出这种改变.
原文来源于这里
0 0
- JS中继承机制的三种方法
- js的三种继承方法
- JS面向对象的继承三种方法:原型继承,原型冒充继承,复制继承
- JS中继承机制的实现
- JS中实现继承的3种方法
- js中实现继承的几种方法
- JS中多继承的几种实现方法
- js实现继承的6中方法
- js实现继承的三种方式
- js继承的三种方式
- js对象的三种继承方式
- JS OO 的继承机制
- js继承机制的实现
- 在JS方法中返回多个值的三种方法
- 在JS方法中返回多个值的三种方法
- JS的继承方法
- hierbnate继承注解的三种方法
- 关于原型继承的三种方法
- CSS选择器
- mysql 远程访问不行解决方法 Host is not allowed to connect to this MySQL server
- Uva11021 Tribbles(数学概率)
- HDU-1839-Delay Constrained Maximum Capacity Path
- java学习总结
- JS中继承机制的三种方法
- java接口的实现
- window中使用git安装PyMySQL
- 拓扑排序
- Lonlife 1057 Private Value
- 算法学习之字符串匹配 KMP 算法(一)(原理介绍)
- 面向对象六大原则(下)
- Javascript
- ArrayList源码解读