zoukankan      html  css  js  c++  java
  • Javascript如何实现继承?

    前言 

    我这篇文章会误人子弟,我把继承跟构造函数实例化搞混了,汗!要想搞清楚JS的继承机制,看下大牛写的文章:http://www.cnblogs.com/dolphinX/p/3307903.html

    很早以前向大牛要了一份坦克游戏的源代码,自己懒一直都没有去看,这几天突然心血来潮,竟然耐着性子一行一行的看代码,一个源文件一个源文件的看,我被大师优秀的设计所折服,看着过程中发现一个奇怪的问题,有几个方法所有对象都有,但是又没有看到在哪定义了,所以我决定仔细的看这个游戏用到的框架Microsoft Ajax Framework( 可能大牛是搞C#开发的:) ),看到后面发现是通过原型(prototype)继承的,自认为对JS的原型模式非常了解:),看了这个游戏的代码之后,发现自己理解的还不够深,最起码JS所有对象之间的关系没有搞清楚>_<。啥是原型模式?怎么实现的呢?JS所有对象间到底是啥关系呢?

    JS的设计理念

    1 一切皆对象!

    2 对象间通过原型来实现继承!

    原型是啥?

    它是函数对象的属性,所有函数对象都有原型(prototype)属性,prototype是一个对象,通过构造函数创建对象时,新的对象会继承构造函数对象的原型(prototype)。

    JS如何实现继承呢?

    通过原型模式实现继承,即构造函数的prototype属性

    JS对象间的关系

     所有函数对象都会继承Function对象,Function对象是所有函数对象的祖先

    所有构造函数的原型通过Object构造函数创建,然后再填充其它方法与属性,Object对象是非函数对象的祖先

    我的疑问

    思索了一下JS对象间的关系之后,我产生了一个问题:Function对象是不是所有对象的祖先啊?

    后记

    1 JS对象继承方式很诡异,不跟其他面向对象的语言一样

    2 JS对象间的关系理解的更深了,是我阅读大牛源码的一个收获,以后多多看开源项目的代码

    作者:WadeYu
    出处:http://www.cnblogs.com/wadeyu/
    本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/wadeyu/p/3463599.html
Copyright © 2011-2022 走看看