zoukankan      html  css  js  c++  java
  • JS中new的运行方式

    在JS中,有两个基础原型,分别是Function.prototype和Object.prototype。这两个原型组成了JS中的所有实例他们的关系是 Function.prototype ----> Object.prototype ----> null。

    常用的创建类的有两种方法,我们从这两种方法讲两种prototype的关系。

    第一种是先有一个原型,直接令新的对象的__proto__指向已经有的原型。这种时候可以类比继承关系,但区别是把那个原型的状态(如属性的取值等)也一并继承过来了。

    但是记住这个时候新的对象从原型继承的值如果没有被初始化/赋值,原型中的值改变的话,新的对象中的对应值也会改变。

    第二种是使用new来继承,new在JS里这样运行:

    1.创建一个最基础的Object对象(内容为空 )并且初始化。

    2.把后面的构造函数放进刚创建的obj中,并且设置__proto__为函数的对象。

    3.使用创建出的对象作为obj,在obj中执行那个函数,,当然那个函数要对刚创建的这个对象进行初始化,然后返回。

    4.如果返回的是Object对象,new就返回这个对象,否则返回刚创建的obj。

    这里解释一下函数的原型类型:

    比如说有 

    function A(){ var a = 1;};

    那么A是一个Object,他的constructor就是A(),平时调用A()就相当于调用A这个Object的构造函数。

     

    PS:prototype属性是该对象作为proto的时候的类型。__proto__是指向本对象的原型对象的指针。

     

     

  • 相关阅读:
    Spring Boot项目配置RabbitMQ集群
    rabbitMQ第二篇:java简单的实现RabbitMQ
    SpringBoot启动和停止脚步
    SpringBoot实战之SpringBoot自动配置原理
    maven profile 多环境
    Mybatis根据配置文件获取session(多数据源)
    Mybatis的mapper注册
    MyBatis SqlSessionFactory的几种常见创建方式
    Result映射成对象和List
    JAVA反射的使用之ResultSet的自动转换
  • 原文地址:https://www.cnblogs.com/dabney/p/6657533.html
Copyright © 2011-2022 走看看