关于New

new运算符创建一个“实例”

实际操作

  1. 创建一个空对象{}
  2. 为步骤一的对象添加__proto__,将该属性链接至构造函数的原型对象
  3. 将步骤一创建的对象作为this上下文
  4. 如果该函数没有返回对象,返回this
// An example 
function Obj() {
    this.attr1 = 'ok'
}

// New process
function newFunc(Func, *args) {
    let a = {}
    let r = Func.apply(a, args)
    a.__proto__ = Obj.prototype
    if (r !== undefined) {
        a = r;
    }
    return a;
}

let newO = newFunc(Obj)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Last Updated: 2022/3/12 下午12:20:13
Contributors: smalltown