实现js中new的功能

首先看看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
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,139评论 0 6
  • 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。ECMAScr...
    DHFE阅读 997评论 0 4
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,651评论 0 5
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,161评论 0 21
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4