码迷,mamicode.com
首页 > 其他好文 > 详细

原型链继承

时间:2017-05-18 01:16:30      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:this   消失   javascrip   cto   设置   另一个   asc   color   ogg   

  面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法。

一、构造函数、原型与实例之间的关系

  每创建一个函数,该函数就会自动带有一个 prototype 属性。该属性是个指针,指向了一个对象,我们称之为 原型对象。指针就好比学生的学号,原型对象则是那个学生。我们通过学号找到唯一的那个学生。假设突然,指针设置 null, 学号重置空了,不要慌,对象还存在,学生也没消失。只是不好找了。

  原型对象上默认有一个属性 constructor,该属性也是一个指针,指向其相关联的构造函数。

  通过调用构造函数产生的实例,都有一个内部属性,指向了原型对象。所以实例能够访问原型对象上的所有属性和方法。

  所以三者的关系是,每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。

 

function Dog (name) {
    this.name = name;
    this.type = ‘Dog‘;  
}
Dog.prototype.speak = function () {
  alert(‘汪!‘);
}
var doggie = new Dog(‘jiwawa‘);
doggie.speak();  //汪!

 

 

 

   以上代码定义了一个构造函数 Dog(),  Dog.prototype 指向的原型对象上的自带属性construtor指向了 Dog,即  Dog.prototype.constructor = Dog. 然后在这个原型对象上定义了一个方法speak。实例doggie由于其内部指针指向了原型对象,所以可以访问到 speak方法。

  技术分享

  

  Dog.prototype 只是一个指针,指向的是原型对象,但是这个原型对象并不特别,它也只是一个普通对象。假设说,我们这时候,让 Dog.protptype 不再指向最初的原型对象,而是另一个类 (Animal)的实例,情况会怎样呢?

 

(正文明天写。)

 

 

 

 

 

  

  

原型链继承

标签:this   消失   javascrip   cto   设置   另一个   asc   color   ogg   

原文地址:http://www.cnblogs.com/sarahwang/p/6870072.html

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