码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript 继承的读书笔记

时间:2015-06-08 21:11:30      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

original link: http://segmentfault.com/blog/trigkit4/1190000002440502

tag: segmentfault, prototype, child, parent, inherit,_proto_

对child的prototype进行赋值之前:

 
1. constructor指向本身
2. _proto_指向Object
技术分享
技术分享
赋值之后:
 
1. 新增加了一个继承自Parent的name属性,且值为mike
2. _proto_改为了parent
技术分享
在this函数内:
技术分享
技术分享

在js中,被继承的函数称为超类型(父类,基类也行),继承的函数称为子类型(子类,派生类)。使用原型继承主要由两个问题:

 

一是字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数。

 

伪类解决引用共享和超类型无法传参的问题,我们可以采用“借用构造函数”技术

借用构造函数(类式继承)

<script>

function Parent(age){

this.name = [‘mike‘,‘jack‘,‘smith‘];

this.age = age;

}

 

function Child(age){

Parent.call(this,age);

}

var test = new Child(21);

alert(test.age);//21

alert(test.name);//mike,jack,smith

test.name.push(‘bill‘);

alert(test.name);//mike,jack,smith,bill

</script>

借用构造函数虽然解决了刚才两种问题,但没有原型,则复用无从谈起,所以我们需要原型链+借用构造函数的模式,这种模式称为组合继承

 

组合继承

<script>

function Parent(age){

this.name = [‘mike‘,‘jack‘,‘smith‘];

this.age = age;

}

Parent.prototype.run = function () {

return this.name + ‘ are both‘ + this.age;

};

function Child(age){

Parent.call(this,age);

}

Child.prototype = new Parent();

var test = new Parent(21);//写new Child(21)也行

alert(test.run());//mike,jack,smith are both21

</script>

组合式继承是比较常用的一种继承方法,其背后的思路是 使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又保证每个实例都有它自己的属性

技术分享

技术分享

Javascript 继承的读书笔记

标签:

原文地址:http://www.cnblogs.com/abapscript/p/4561771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!