博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
new做了些什么?
阅读量:4633 次
发布时间:2019-06-09

本文共 770 字,大约阅读时间需要 2 分钟。

new做了些什么?

function People(name, age){    this.name = name;    this.age = age;};var xiaoming = new People();

要创建 People 的新实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历以下 4

个步骤:

  1. 创建一个新对象;
  2. 将this 就指向了这个新对象;(同时还继承了该函数的原型) -- 将新对象 __ proto __ 指向 构造函数 prototype;
  3. 执行构造函数中的代码(为这个新对象添加属性);
  4. 返回新对象。
1. var obj  = {};2. obj.__proto__ = People.prototype;   People.call(obj);   3. People();4. teturn obj;

手写实现New

function myNew() {    // 创建一个空的对象    let obj = new Object()    // 获得构造函数(即arguments[0])    let Con = [].shift.call(arguments)  //获取第一个参数,shift()直接修改原数组    // 链接到原型    obj.__proto__ = Con.prototype    // 绑定 this,执行构造函数    let result = Con.apply(obj, arguments)    // 确保 new 出来的是个对象    return typeof result === 'object' ? result : obj}

转载于:https://www.cnblogs.com/topyang/p/11397188.html

你可能感兴趣的文章
京华同学聚会
查看>>
JSP--JavaBean
查看>>
成功将BlogEngine 1.5 升级到了BlogEngine 2.0
查看>>
【shell】创建长目录,目录存在则忽略,缺失则创建
查看>>
个人随笔、收藏——(包括技术、设计思想等)
查看>>
第一段冲刺_个人总结_5.2
查看>>
Usage and Idioms——Categories
查看>>
一: 建立Vue sampleproject
查看>>
数据结构之shell排序
查看>>
CodeForces 375D Tree and Queries
查看>>
牛客~~打篮球~~~模拟水题
查看>>
LeetCode-198. 打家劫舍
查看>>
5 -- Hibernate的基本用法 --2 1 Hibernate 下载和安装
查看>>
Socket
查看>>
【C#公共帮助类】10年代码,最全的系统帮助类
查看>>
JQuery UI
查看>>
张弛有度
查看>>
【ZJOI2008】树的统计(树链剖分)
查看>>
【NOIP校内模拟】T2 华莱士(环套树)
查看>>
lists,tuples and sets of Python
查看>>