JavaScript 的 new 操作符,操作对象是一个函数(箭头函数,async 函数除外),一般来说此函数我们不自己写 return,此时返回的是个默认的对象 this。
如果自己写了返回,那么分两种情况:
- 返回的是对象或者方法,就返回我们自己写的返回内容
- 否则返回默认对象 this
1 | function A() { |
new 操作符的模拟实现:
1 | function newOperator(C) { |
也可以自己写Object.create
:
1 | function object(obj) { |
但是发现,打印出来的是F {}
,虽然点开此对象,发现构造函数已经是A
了,但确实不如 JavaScript 自带的Object.create
干净完美