zoukankan      html  css  js  c++  java
  • 原型

    原型与原型链很晕,在此个人试着去了解一下:

    第一个问题:__proto__ 原型是什么?

    首先,创建一个对象a和对象b,设置b的原型(__proto__)指向a

    由结果看出,b的原型指向a,如果b对象查找属性a,如果a自身并不存在,会通过原型链向上查找(一直找到跟这里是Object)

    另外:因为__proto__ 只是支持浏览器(而且有的没有),所以建议在获取对象原型的时候使用Object.getPrototypeOf(obj)方法获取原型。

    还有,通过create方法创建的对象,原型对象会指向源对象。

    而assign 只是复制自身属性(不会继承)

    因为这里create 创建的是一个真正意义上的空对象(没有原型),所以c只是获得了a对象自身属性的拷贝(并没有获得a对象的原型)

     2.原型与prototype原型对象的关系?prototype 是什么?

    首先创建一个对象:

     

    可以看出,没有prototype 。说明简单对象是没有的,那么谁有?

     创建了一个函数,可以看出它有prototype 对象。

     

    打印出来,指向的是 constructior 构造器对象,构造器对象拥有2个属性,一个是构造函数,一个是原型(原型是都存在的,处处皆对象)

     

    在这里,原型指向的是Object 。构造器函数中又拥有自己的属性和方法,并且有prototype 和 __proto__。

    再向下深入:

    可以看懂构造器函数的原型对象拥有原型和构造器。

     

    再看构造器,发现构造器函数始终存在prototype 原型对象和__proto__  原型,那么也就是说只要是函数(存在构造器),那么它就始终存在prototype 和__proto__ 原型。prototype 对象在属性构造对象中的对象属性,而原型与构造器位同级。

     那么原型链(下面个人理解,欢迎大家指正),我们往往指的应该就是__proto__ 链,原型对象prototype 指的是函数对象构造器对象和__proto__原型

    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    关于mysql的wait_timeout参数 设置不生效的问题【转】
    mysql只读模式的设置方法与实验【转】
    ansible批量修改linux服务器密码的playbook
    Serv-U 的升级及数据备份和迁移【转】
    java系统的优化
    JBoss6.1.0修改启动jvm内存以及修改日志级别【转】
    JAVA_OPTS讲解【转】
    RabbitMQ集群、镜像部署配置
    LVS+MYCAT+读写分离+MYSQL主备同步部署手册
    常用数据库高可用和分区解决方案(2) — MongoDB篇
  • 原文地址:https://www.cnblogs.com/jony-it/p/10981697.html
Copyright © 2011-2022 走看看