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

javascript继承

时间:2015-03-17 11:55:18      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

大家都知道JavaScript中没有类的概念,那么 怎么实现继承呢?这就是今天要实现的内容。

在实现之前,先来看一道腾讯的js面试题:

 有一只小狗,叫“花花”,它会‘汪汪’叫,它的同伴也会‘汪汪’叫,后来环境发生变化,新出生的狗狗不会‘汪汪’叫了,而是变成‘呜呜’。试通过继承来达到目的。

带着实际问题去学习,更能知道自己想要的是什么,更能抓住重点。先憋开面试题不说,先看看,js如何实现继承。

通过“原型”实现继承

JavaScript中既然没有类的概念,肯定不是通过类来实现继承的。这里先介绍第一种常见的继承方式——原型继承

1、定义一个“狗”的父类,有“叫”的方法

   function Dog(){
        this.bark = function(){alert(‘汪汪‘);};
    }

2、定义一个“猎狗”的子类

   function HuntingDog(){
        this.climb = function(){alert(‘我会爬树‘);};
    }

3、让“猎狗”也会“叫”


   HuntingDog.prototype = new Dog();  //通过关键字‘prototype’开始继承

4、测试

    var huntingDog = new HuntingDog();

    huntingDog.bark();//猎狗也会叫,调用Dog的函数

 

到此,已经实现子类“猎狗”继承父类“狗”,这种继承方式是通过关键字“prototype”来实现的,指定“猎狗”的原型是“狗”,这样“猎狗”就具有了“狗”的全部属性。其实在JavaScript中,每个对象都有一个原型对象,直至顶层的Object对象,当然Object对象的原型值为null。

输出 “猎狗”对象  console.log(huntingDog);  如图:

那么,“猎狗”对象huntingDog是如何找到bark()方法的呢?

猎狗huntingDog首先在自身对象上寻找bark()方法,寻找不到,去原型寻找,原型Dog对象上,有bark方法,调用bark方法。

 

其实这里也就涉及到了JavaScript高级中一个重要的概念——原型链

对象 -> 原型 -> 原型的原型 -> Object -> null ,这样的一条链,称为原型链
对象的属性和方法,就是沿着原型链来查找和调用的,也就是js的原型继承

 

通过原型关键字”prototype“实现js继承是最常用的方法,但是原型继承时,发生的改变会影响下游的所有子类

javascript继承

标签:

原文地址:http://www.cnblogs.com/liyingcherish/p/4343955.html

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