美文网首页
日志 new 操作符

日志 new 操作符

作者: YucinChow | 来源:发表于2019-07-06 20:04 被阅读0次

调用new的过程发生:
1.新生成一个对象
2.链接到原型
3.绑定this
4.返回新对象(如果构造函数有自己 retrun 时,则返回该值)

手动new实现

function create() {
    //创建一个新的对象
    let obj = {}
    //获取构造函数
    let Con = [].shift.call(arguments)
    //链接构造函数原型
    obj.__proto__ = Con.prototype
    //绑定this
    let result = Con.apply(obj, arguments)
    //判断是否返回object,确保new出来的是个对象
    return typeof result === 'object' ? result : obj
}

/*关于arguments,由于arguments是类数组对象,并没有shift方法(此方法
位于Array原型对象上,Array.prototype.shift)因此此处需要使用call方法调用

在此处使用shift方法既可以获得constructor(The shift() method removes
 the first element from an array and returns that removed element. 
This method changes the length of the array.)还可以将其从arguments中
移除,使的后面调用时,无需再做进一步的处理 。
*/

相关文章

  • 日志 new 操作符

    调用new的过程发生:1.新生成一个对象2.链接到原型3.绑定this4.返回新对象(如果构造函数有自己 retr...

  • JS基础回归01:new操作符,原型和原型链

    本篇介绍 new 操作符的背后原理以及 JS 如何依赖原型形成原型链,完成继承。 new 操作符的本质 new 操...

  • js中的new关键字都干了些什么?

    new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new...

  • new

    什么是new操作符 new会生成一个实例对象,该对象的this指向该实例 实现一个new操作符

  • 关于 C++ 里的 New

    new expression : new 表达式 operator new : 操作符函数,用来分配内存. ...

  • c++_动态对象创建

    一.c语言 c语言使用malloc 来创建堆对象 二.c++ new操作符 delete操作符 如果new []...

  • new 对象 class

    new 操作符具体干了什么? 当我们new一个数据的时候,new操作符到底做了什么? 首先是创建实例对象{},th...

  • 关于 new 操作符

    1. 为什么要有new操作符? JS 的 new 到底是干什么的? 本文指出,new 操作符其实就是个语法糖,用了...

  • 刘铁猛C#(11)操作符详解(下)

    New 操作符 不仅是个关键字,也是操作符,用于创建实例,是实例构造器的操作符。 1)new 可以创建一个类型的实...

  • 2021-06-19 new操作符的实现

    JavaScript中的new操作符的原理 例子 先定义了一个构造函数Person,然后通过new操作符生成Per...

网友评论

      本文标题:日志 new 操作符

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