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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑中毒了怎么办开不了机 台湾竹长得太高怎么办 文竹长得太高怎么办 桑叶牡l丹长虫怎么办 日本海棠开完花后枯萎了怎么办 长寿冠海棠烂根怎么办 夏季长寿冠海棠掉叶怎么办 竹节海棠有点烂根怎么办? 丽格海棠烂茎怎么办 长寿花徒长不开花怎么办 长寿花植株长了怎么办 丽格海棠不爱长怎么办 竹节海棠太高了怎么办 绿萝叶子发黄烂根怎么办 发财树叶子发黄烂根怎么办 君子兰烂根叶子发黄怎么办 四季海棠花叶子干了怎么办 海棠花叶子枯萎枝干发黑怎么办 长寿花叶尖焦了怎么办 新买的盆栽蔫了怎么办 熬中药水太多了怎么办 秋根海棠烂根怎么办 大叶海棠烂根怎么办 玻璃海棠长得很高怎么办 玫瑰海棠叶子干焦怎么办 海棠树树干生虫怎么办 天竺葵花骨朵有虫子了怎么办? 被刺梅的刺扎了怎么办 被刺梅的刺划手了怎么办 虎刺花叶子黄了怎么办 地栽月季叶子发黄怎么办 梅花浇水浇多了怎么办 深水井底下花管进水量小怎么办 盆景对节白腊树叶尖干枯怎么办 四季海棠茎软了怎么办 玫瑰海棠烂根了怎么办 格丽海棠花腌了怎么办 养殖场不能雨污分流怎么办 药店买的药贵了怎么办 神经损伤小便少尿不出来怎么办 手指夹伤出血了怎么办