如果函数明确返回值,那么new
运算符的结果将是这个值。- 如果函数明确返回 non-primitive 值,那么
new
运算符的结果将是这个值。- 感谢 @xxf1996 指正 - 所以,原表达式相当于:
test instanceof test
。
instanceof
运算符将检测右端值的prototype
属性是否在左端值的原型链([[Prototype]]
属性)上;- 如果不在,则向上查找(
[[Prototype]]
的[[Prototype]]
,…),直到找遍左端值的整个原型链。
注:
[[Prototype]]属性可以通过Object.getPrototypeOf(obj)函数获得,
- 左端值
test
是一个Function
,故它的原型链为:Function.prototype -> Object.prototype -> null
- 可以看到,原型链上没有
test.prototype
出现,所以test
并不是test
的一个实例。 - 所以
instanceof
运算符返回false
。



