JS 继承

构造函数,原型和实例的关系:

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。


1.原型链:

记住:所有函数的默认原型都是Object的实例,因此默认原型都会包含一个内部指针,指向Object.prototype 

 原型链问题:

1).引用类型值的原型属性会被所有实例共享

2)..在创建子类型的实例时,不能向超类型的构造函数中传递参数

2.借用构造函数:(伪造对象火经典继承)


3.组合继承(伪经典继承),最常用的继承模式

思路:使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。

这样,既通过在原型上定义方法实现 了函数复用,又能保证每个实例都有它自己的属性。

function SuperType(name){

     this.name = name;

     this.colors  = ["red","blue","green" ];

}

SuperType.prototype.sayName = function(){

alert(this.name);

}

function SubType(name, age){

      //继承属性

SuperType.call(this,name);

       this.age =age;

}

//!继承方法

SubType.prototype = new SuperType();

 

SubType.prototype.sayAge = function(){

    alert(this.age);

}


var instance1 = new SubType("Nicholas",29);

instance1.colors.push("black");

alert(instance1.colors);//"red,blue,green,black"

instance1.sayName();

instance1.sayAge();


var instance2 = new SubType("Greg",27);

alert(instance2.colors);//"red,blue,green"

instance2.sayName();

instance2.sayAge();


4.原型式继承


5.寄生式继承


6.寄生组合式继承



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值