function Func() {
}
let func = new Func()
- 创建一个空的的对象
let obj = new Object()
-
链接到原型
把obj的proto指向构造函数Func的原型对象prototype,此时便建立了obj对象的原型链:obj-> Func.prototype->Object.prototype-null
obj.__proto__ = Func.prototype
- 绑定this值(让Func中的this指向obj,并执行Func的函数体)
let result = Func.call(obj)
-
返回新对象
判断Func的返回值类型: 如果无返回值或者返回一个非对象值,则将obj作为新对象返回;否则会想result作为新对象返回
if(typeof(result) == 'object') {
func = result
}else {
func = obj
}