首页 > 其他分享 > 第 14 题:情人节福利题,如何实现一个 new

第 14 题:情人节福利题,如何实现一个 new

时间:2022-09-07 15:03:46浏览次数:419  
标签:obj 14 对象 Object Fn new 情人节 构造函数

new运算符都做了哪些操作呢?
1、创建了一个新对象(是Object类型的数据)
2、将this指向新对象
3、将创建的对象的原型指向构造函数的原型
4、返回一个对象(如果构造函数本身有返回值且是对象类型,就返回本身的返回值,如果没有才返回新对象)

下面就写一个实现new功能的函数:

function mynew () {
     // 1、创建一个新对象
     const obj = Object.create({});    // 也可以写成 const obj = {}
     // 2、将this指向该对象
     let Fn = [].shift.call(arguments);    // 把构造函数分离出来
     let returnObj = Fn.apply(obj, arguments);     // 通过apply将this指向由Fn变为obj
     
     // 3、将新对象的原型指向构造函数的原型
     obj.__proto__ = Fn.prototype
     
    // 4、返回对象(如果构造函数有返回对象,那么就返回构造函数的对象,如果没有就返回新对象)
    return Object.prototype.toString.call(returnObj) == '[object Object]' ? returnObj : obj;
}

 

标签:obj,14,对象,Object,Fn,new,情人节,构造函数
From: https://www.cnblogs.com/zhanghaian/p/16665441.html

相关文章

  • arc142
    \(\textbf{C.}\)事实上,若\(d(1,2)\neq1\),则\(d(1,2)=\min\{d(1,x)+d(2,x):x\geq3\}\).然后发现若存在\(x\geq3\),使\(|d(1,x)-d(2,x)|\neq1\),则必有\(d(1......
  • arc143
    \(\textbf{B.}\)发现一个符合条件的矩阵\(a\)当且仅当\(\forall(i,j)\),"\(a_{i,j}\)是\(a_{i,k}\)中的最大值"和"\(a_{i,j}\)是\(a_{k,j}\)中的最小值"不同时......
  • AtCoder Regular Contest 147
    ProblemA题目大意:由N个正整数组成的序列,我们可以从中取出任意长短序列进行如下操作:序列中(最大值maxn%最小值minn=A),如果A为0则删除maxn,否则用A替换,询问要使得整个序......
  • COMPFEST 14 - Preliminary
    A.AccumulationofDominoes这题了一个构造矩阵的方法。相邻的两个方块组在一起是一张牌,问有多少张牌是两个数的差值为一的。根据构造规则发现只有两个方块在一行才可能......
  • leetcode 114. Flatten Binary Tree to Linked List 二叉树展开为链表(简单)
    一、题目大意给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。......
  • new Set()的基础用法(ES6)
    1、什么是Set()Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。Set本身是一个构造函数,用来生成Set数据结构2、......
  • 14. 最长公共前缀
     难度简单2431收藏分享切换为英文接收动态反馈编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例1:输入:strs=["f......
  • 信息学奥赛一本通 1314:【例3.6】过河卒(Noip2002)
    时间限制:1000ms      内存限制:65536KB提交数:26367   通过数:11410【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下......
  • java获取目路下所有文件及子目录_Java编程获取文件列表及子文件目录的方法(非递归)...
    java获取目路下所有文件及子目录_Java编程获取文件列表及子文件目录的方法(非递归)...废话不谈,直接进入正题,理解见代码注释。//非递归publicListscanFiles(Stringpa......
  • shell脚本之sed详解 (sed命令 , sed -e , sed s/ new / old / ... )
    shell脚本之sed详解(sed命令,sed-e,seds/new/old/...) (一) Sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。vi中的正则表达......