手写new
注意
请写出new的实现
答:
function myNew() {
const obj = new Object()
const constructor = Array.prototype.shift.call(arguments)
obj.__proto__ = constructor.prototype
const res = constructor.apply(obj, arguments)
return res instanceof Object ? res : obj
}
1
2
3
4
5
6
7
2
3
4
5
6
7

- 创建一个空对象,作为返回的实例
- 把空对象的
<code>proto</code>指向构造函数的<code>prototype</code> - 把空对象 赋值给 构造函数的
<code>this</code>, 并执行构造函数。(如:this.name = 'zcl',此时this为新建对象obj,相当于给obj赋于构建函数的属性) - 如果 第三步的构造函数 没有返回 对象
编辑 (opens new window)
上次更新: 2025/07/20, 06:21:22