美文网首页关于JS
js中的new做了什么事及实现方法

js中的new做了什么事及实现方法

作者: Yixi_Li | 来源:发表于2019-04-21 22:55 被阅读10次

(1) 创建一个新对象;
(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;
(3) 执行构造函数中的代码(为这个新对象添加属性) ;
(4) 返回新对象。

var obj = new Base();

这样代码的结果是什么,我们在Javascript引擎中看到的对象模型是:


image.png

new操作符具体干了什么呢?其实很简单,就干了三件事情:

var obj  = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
return obj;

第一行,我们创建了一个空对象obj
第二行,我们将这个空对象的proto成员指向了Base函数对象prototype成员对象
第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是Base的this就指向了这个obj对象
第四行,返回这个obj对象

用原生JS实现new方法

function New(f) {
    return function () {
        var o = {"__proto__": f.prototype};
        f.apply(o, arguments);//继承父类的属性
        return o; //返回一个Object
    }
}

相关文章

  • js中的new做了什么事及实现方法

    (1) 创建一个新对象;(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;(3) 执行...

  • js new 运行机制

    js手札--js中new到底做了些啥JS核心系列:理解 new 的运行机制深入理解 Javascript 运行机制及原型

  • JS中new的原理及实现

    在调用new的过程中做了四件事: 1.新生成对象 2.链接到原型 3.绑定this 4.返回新对象 接下来就针对这...

  • Js的new过程中 做了什么事

    简单来讲 js 在new 的过程中只做了三件事 1.创建一个新对象 2.将这个新对象的proto指向 构造函数的 ...

  • 手写Promise

    基本实现new Promise 和 then /catch方法 Promise.js test.js测试 调用手...

  • 前端资料

    ES6新数据类型 Symbol . js变量提升函数提升 js this js 原型及原型链理解 new做了什么 ...

  • JS中的new做了什么

    用构造函数创建对象,new做了4步:

  • 实现js中的new

    观察 观察new的结果,rec1是一个对象,对象被赋予了构造函数的属性,并根据传参赋予属性相应的值。并且rec1的...

  • JS知识点

    new 这么一个东西,在 js 中到底是 做了哪些事情。简单来讲 js 在new 的过程中只做了三件事 1.创建一...

  • 原生JS实现new方法

    Javascript中的new操作符实际上做了以下4件事情: 创建一个新的空对象 链接新创建的对象和构造函数的原型...

网友评论

    本文标题:js中的new做了什么事及实现方法

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