怎么不用new得到一个新的实例?下面看一下两个代码的对比
这两块代码可以实现同样的功能,但是一个是重写了内置的new。
下面来详细说说怎么重写的,首先要了解new的运算机制,就是new到底做了什么。
1.创建一个实例对象
2.把执行函数的this指向实例对象(改变this指向)
3.处理返回值。
其中有个小知识点,关于ES6里面的展开运算符。
function fn() {}
let arr = [20, 30, 300]
fn(...arr) //fn(20,30,300)
fn(arr) //fn([20,30,300])
如果 不用展开运算符,应该怎么做?
function _new(ctor){
[].slice.call(arguments,1)
//如果不用...params
}