new
new 的过程中做了什么
一个新对象被创建。它继承自foo.prototype
构造函数 foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)
会被指定为这个新实例。new foo 等同于 new foo(,只能用在不传递任何参数的情况
如果构造函数返回了一个“对象”,那么这个对象会取代整个new出来的结果。如果构造
函数没有返回对象,那么new出来的结果为步骤1创建的对象
手动实现new方法
var M = function(name) {
this.name = name
}
1
2
3
2
3
const n1 = new N()
const n2 = new2(N)
function new2(func) {
const o = {}
o.__proto__ = func.prototype
const k = func.call(o)
// 如果有返回值
if(typeof k === 'object') {
return k
} else {
return o
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2022/07/03, 15:02:21