1. 实现 new
先看看平时我们是怎么使用new
的:
function Person(name, age){
this.name = name;
this.age = age;
}
let person = new Person('zs', 20);
在以上代码中,new
实际做了以下几件事:
- 创建一个新对象
- 改变构造函数中的作用域指向:
this
指向新对象 - 将构造函数接收的参数,为对象中的属性赋值
- 返回这个对象
分析完,我们就可以动手实现了:
function myNew(Constructor){
return function(){
let obj = new Object();
obj.__proto__ = Constructor.prototype;
Constructor.call(obj, ...arguments);
// Constructor.apply(obj, arguments);