美文网首页
JavaScript深入理解-new关键字创建对象底层原理

JavaScript深入理解-new关键字创建对象底层原理

作者: 朴小壹 | 来源:发表于2019-03-01 20:17 被阅读0次

JavaScript中 new 操作符可以通过构造函数创建对象,但是其底层原理大多人都不太清楚,下面我们来详解一下 new 操作符的底层原理。(PS:JavaScript有8种内置的构造函数:Object、Array、Function、Date、RegExp、Number、String、Set、Map

首先看一下这句代码:

var obj = {};
var arr = [];

// 其实这只是JavaScript中创建对象的语法糖,本质上为

var obj = new Object();
var arr = new Array();

下面详解 new Object() 底层是如何运行的,大致分为三步,

  1. 创建一个空对象 {};
  2. 将空对象的 proto 原型对象 指向 Object.prototype;
  3. 将Object构造函数的this指向当前空对象
  var obj;

  创建空对象:{};

  {}.__proto__ = Object.prototype;

  Object.call({});

  obj = {};

示例:

  function People() {
    this.name = 'phuhoang';
  }
  var me = new People();        // { name: 'phuhoang'}

  // 其执行过程拆分为

  0. var me;
  1. 内存开辟空间创建空对象 {}                // {}
  2. {}.__proto__ = People.prototype      // { __proto__: People.prototype }
  3. People.call({})                      // { name: 'phuhoang', __proto__: People.prototype }
  4. me = { name: 'phuhoang', __proto__: People.prototype }  

相关文章

  • JavaScript深入理解-new关键字创建对象底层原理

    JavaScript中 new 操作符可以通过构造函数创建对象,但是其底层原理大多人都不太清楚,下面我们来详解一下...

  • JavaScript: new关键字创建对象底层原理

    我们都知道,new关键字可以在js里可以产生一个新对象,但是它到底是怎么产生的对象呢?现在我们就来探秘new的底层...

  • 日期对象-Date

    1、创建Date对象 在JavaScript中,创建日期对象必须使用“new语句”。使用关键字new新建日期对象时...

  • JavaScript new 关键字

    new 关键字 在JavaScript中, new 关键字用来创建一个类(模拟类)的实例对象。 实例化对象之后, ...

  • JavaScript基础之创建对象

    JavaScript对象的创建 在JavaScript中创建一个对象有三种方式。可以通过对象直接量、关键字new和...

  • JavaScript面向对象设计

    参考资料: 深入理解JavaScript系列(5):强大的原型和原型链 JavaScript new关键字 jav...

  • 理解 JavaScript 对象的属性

    对象属性 创建 JavaScript 自定义对象有两种方法。一种是通过 new 关键字创建一个 Object 实例...

  • IOS底层原理之isa

    在上一篇的文章深入底层理解alloc和init以及new中我们分析了alloc,知道了 alloc创建了对象并且分...

  • Java中创建对象的四种方式

    使用new关键字创建对象 使用new关键字创建对象是最常见的一种方式,但是使用new创建对象会增加耦合度。在开发中...

  • freecodecamp的笔记

    JavaScript对象及函数程序 使用构造函数来创建对象 使用构造函数时,我们通过在它前面使用 new 关键字 ...

网友评论

      本文标题:JavaScript深入理解-new关键字创建对象底层原理

      本文链接:https://www.haomeiwen.com/subject/ymnduqtx.html