zoukankan      html  css  js  c++  java
  • 谈谈原型

    很经典的一张图,基本上把JS中的原型这一套东东说的很清楚。

    一. __proto__和prototype

    1. 任何对象都有一个__proto__属性
    2. 任何函数都有一个prototype对象

    因为prototype也是一个对象 ,所以它肯定也包括一个___proto__,这个__proto__就指向原型的原型,这么一环套一环,是不是感觉像条链子?好了,原型链就这么来了。

    二. constructor

    constructor光看名字,就知道是指代的构造函数,上面刚说prototype是一个对象,它不仅有___proto__指向原型对象,还有constructor指向这个对象的构造函数。这么一看,JS中最让人头疼的问题,对象和函数的关系是不是就有点豁然开朗了?

    三. 原型的作用

    • 简单的来说,就是为了JS中为了实现高效率的继承,为什么要说高效率,因为通过prototype对象上绑定的方法,是所有对象共用的一套的。
    • 当然,你也可以自己写相同的方法,来同名覆盖,但是对象永远不可能修改prototype上的方法。
    • 这里还要注意动态性,你先创建对象,后增加prototype上的方法,也不影响调用。(其实也是废话,弄清楚了原型链,方法的调用其实就是一条链上的动态查找。)
    • 如果已有实例属性与prototype上的同名,但是你又想调用prototype的属性,请用delete方法,那么删除属性之后,对象会使用原型链上的那个属性(也就是说,delete操作只会在自身的属性上起作用)
    • 原型继承也不是完全没有缺陷,譬如说调用prototype上的一个数组类型的属性,如果对它进行赋值,那就对所有对象都生产影响。
  • 相关阅读:
    梳理一下自己的技术关注面[转]
    在SharePoint 2010系统中安装RBS FILESTREAM Provider
    53套SharePoint 2010站点模版在线演示及下载
    sharepoint form认证下的当前在线用户统计和当日浏览量的统计
    MOSS部署常用的stsadm命令行
    asp.net实现伪静态的几种常用的方法
    新闻滚动效果JQuery实现
    百度编辑器Ueditor的使用
    新闻滚动JS
    SQL分页笔记
  • 原文地址:https://www.cnblogs.com/zhou-yuan/p/14340371.html
Copyright © 2011-2022 走看看