new做了些什么?
Posted topyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new做了些什么?相关的知识,希望对你有一定的参考价值。
new做了些什么?
function People(name, age)
this.name = name;
this.age = age;
;
var xiaoming = new People();
要创建 People 的新实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历以下 4
个步骤:
- 创建一个新对象;
- 将this 就指向了这个新对象;(同时还继承了该函数的原型) -- 将新对象 __ proto __ 指向 构造函数 prototype;
- 执行构造函数中的代码(为这个新对象添加属性);
- 返回新对象。
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
以上是关于new做了些什么?的主要内容,如果未能解决你的问题,请参考以下文章