实现js中new的功能

作者: 会飞小超人 | 来源:发表于2019-05-13 19:57 被阅读4次

首先看看new具有哪些功能:

  1. 创建一个对象,对象的原型指向构造函数的prototype。
  2. 构造函数里的this指向的就是这个对象。
  3. 执行构造函数里的语句。

但还要考虑一点,构造函数里可以返回一个自定义的值,这个值es有这样的规范:
遇上返回Object就返回自身,否则返回构造的Object。

function _new(func,...arg){
    // 1. 创建一个对象,对象的原型指向构造函数的prototype。
    let obj=Object.create(func.prototype)
    // 将构造函数里的this指向这个对象,病执行构造函数里的语句
    const ret=fn.appay(obj,arg)
    // 遇上返回Object就返回自身,否则返回构造的Object
    return ret instanceof Object?ret:obj
}

相关文章

  • 实现js中new的功能

    首先看看new具有哪些功能: 创建一个对象,对象的原型指向构造函数的prototype。 构造函数里的this指向...

  • 实现模拟JS的new功能

    new功能是要生成一个构造函数的实例,所以在实现过程中需要我们手动创建一个空对象,对象的原型继承自构造函数。如果调...

  • 实现js中的new

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

  • js学习札记-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 说js ...

  • js基础-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 js n...

  • js实现new

    new一个函数时发生了什么? 创建一个新的对象将构造函数的原型复制给新对象(this就指向了新对象)执行构造函数中...

  • 模拟实现js中new的作用

  • JS中new的原理及实现

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

  • 微信小程序 页面跳转

    跳转功能实现有两种,一种是在wxml中,一种是在js中; 一、 js实现: wxml代码:绑定函数 js代码: t...

  • js模拟实现new运算符功能

    new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 示例: 我们可以看到,实例可以访问...

网友评论

    本文标题:实现js中new的功能

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