zoukankan      html  css  js  c++  java
  • js 原型和原型链解释

    1,为什么需要原型?

      用构造函数生成实例对象,有一个缺点,无法共享属性和方法。

      每一个实例对象,都有自己的属性和方法的副本。这不仅无法做到数据共享,也是极大的资源浪费

      考虑到这一点,设计js作者决定为构造函数设置一个prototype属性。

      这个属性包含一个对象(以下简称"prototype对象"),所有实例对象需要共享的属性和方法,都放在这个对象里面;那些不需要共享的属性和方法,就放在构造函数里面。

      实例对象一旦创建,将自动引用prototype对象的属性和方法。也就是说,实例对象的属性和方法,分成两种,一种是本地的,另一种是引用的。

    2,原型(prototype)

      概念:每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

    3,原型的继承方式(两类5种)

      1,构造函数绑定 (使用call或apply方法,将父对象的构造函数绑定在子对象上,即在子对象构造函数中加一行)

      2, prototype模式

      3, 直接继承prototype

      4,利用空对象作为中介

      5,拷贝继承

    4,原型链

      概念:在javascript中,每个对象都有一个指向它的原型(prototype)对象的内部链接。每个原型对象又有自己的原型,直到某个对象的原型为null为止,组成这条链的最后一环

    只是总结性的描述一下,想看详细内容请点击参考链接祥看

    参考链接:简书--https://www.jianshu.com/p/826b485c5696,

         阮一峰--http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.html

  • 相关阅读:
    面试8:找二叉树的下个结点
    面试8:找二叉树的下个结点
    面试题7:重建二叉树
    面试题7:重建二叉树
    Kenneth A.Lambert著的数据结构(用python语言描述)的第一章课后编程答案
    基础的Mapgis三维二次开发-插件式
    面试题6:从尾到头打印链表
    C语言中声明和定义详解(待看。。
    面试题5:替换空格
    面试题5:替换空格
  • 原文地址:https://www.cnblogs.com/dglblog/p/10553740.html
Copyright © 2011-2022 走看看