zoukankan      html  css  js  c++  java
  • 0148 JavaScript 的 new关键字

    我的版本
    1. 在构造函数代码开始执行之前,创建一个空对象;
    2. 设置新对象的__proto__指向构造函数的prototype对象,p.proto = XXXX.prototype;
    3. 执行构造函数,修改this的指向,让构造函数中的this指向创建出来的空对象,拷贝构造函数中的方法、属性给新对象;
    4. 判断构造函数返回的结果,如果返回的不是引用类型值,默认把实例返回;如果返回的是引用类型值,则返回引用类型。

    ZXT
    1. 拥有普通函数执行的一面,让他作为普通函数执行
    2. 创建一个实例对象
      ->空对象
      ->对象.proto===类.prototype
    3. 方法执行的时候,方法中的this是实例对象
    4. 判断方法的返回结果,如果返回的不是引用类型值,默认把实例返回

    5.2.3.2 new关键字的作用
    1. 在构造函数代码开始执行之前,创建一个空对象;
    2. 修改this的指向,把this指向创建出来的空对象;
    3. 执行函数的代码
    4. 在函数完成之后,返回this---即创建出来的对象

    new -- 2015 ZD:
    1. 创建一个空对象:new obj = { };
    2. 用空对象,调用构造函数,构造函数在空对象中添加属性、方法;
    3. 设置新对象的__proto__指向构造函数的prototype对象;
      【任何一个对象都有__proto__,任何一个函数都有prototype对象。】
    4. 返回新对象的地址。

    new的本质复习【WSK】

    当我们new 一个实例后,系统自动做了如下事情:
    (1)创建一个空对象, var p = {}。
    (2)拷贝构造函数中的方法、属性到空对象中。
    (3)自动成生一个属性_proto_指向类的原型, p.proto = XXXX.prototype。


    new一个对象背后做了些什么? 【ShangGuiGu】
    • 创建一个空对象
    • 给对象设置__proto__, 值为构造函数对象的prototype属性值, this.proto = Fn.prototype
    • 执行构造函数体(给对象添加属性/方法)

    New 和构造函数确认了眼神:
    1.他们俩生了一个宝宝。
    2.这个宝宝必须是亲生的 this指向。
    3.教孩子读书一肚子墨水。
    4.长大挣钱回报父母。

  • 相关阅读:
    day09_request&response学习笔记
    为什么浏览器User-agent(浏览器类型)总是有Mozilla字样?
    无效类字符串:ProgID: Excel.Application
    django2.0升级日记
    Kali Linux信息收集工具
    Kali Linux 工具使用中文说明书
    人手一份核武器
    五大常用算法【转发】
    ACCA AI来袭会议笔记
    2017 Gartner数据科学魔力象限出炉,16位上榜公司花落谁家?
  • 原文地址:https://www.cnblogs.com/jianjie/p/12153742.html
Copyright © 2011-2022 走看看