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__是指向本对象的原型对象的指针。

     

     

  • 相关阅读:
    Stars in Your Window POJ
    Adding New Machine ZOJ
    洛谷 P3400 仓鼠窝
    django启动时报错:Apps aren't loaded yet.
    netstat命令简单使用
    iostat命令简单使用
    linux下查找指定时间内修改过的或新建的文件
    nginx学习之压缩解压篇(七)
    nginx学习之反向代理篇(六)
    nginx学习之静态内容篇(五)
  • 原文地址:https://www.cnblogs.com/dabney/p/6657533.html
Copyright © 2011-2022 走看看