See Chrome Devtools!
bind
javascript 里有四种 this 变量的绑定:
默认绑定
隐式绑定
显示绑定
new 绑定
重点在于区分最后两种绑定的优先级, 为了保证每次 new 出来的对象都要是原对象的实例, 必须要在原 new 的结果上进行数据操作
所以 bind 之内也不会在 new 的时候劫持 this, 具体判断方法就是看真的执行的时候, this 指向的是不是一个当前被执行函数的实例
如果是的话, 则证明此时就是在执行 new 操作, 该实例也是由默认的 new 操作而生成的, 此时不应劫持 this 的指向.