面试题答案
一键面试- 隐式类型转换过程:
- 在JavaScript中,当执行
obj + 2
这样的加法运算时,其中一个操作数是对象(obj
),另一个是数字(2
)。对象在进行加法运算时,会先尝试将其转换为原始值。 - JavaScript会首先调用对象的
valueOf
方法来获取原始值。如果valueOf
方法返回的不是原始值,再调用toString
方法。
- 在JavaScript中,当执行
- 涉及原型链的环节:
- 对于
obj
这个MyObject
的实例,它本身没有valueOf
方法。所以JavaScript会沿着原型链查找valueOf
方法。 MyObject.prototype
定义了valueOf
方法,所以会调用MyObject.prototype.valueOf
方法。这个方法返回字符串'42'
。
- 对于
- 最终结果:
- 因为
valueOf
方法返回了字符串'42'
,此时表达式变为'42' + 2
。 - 在JavaScript中,当一个字符串和一个数字进行加法运算时,数字会被转换为字符串,然后进行字符串拼接。所以
'42' + 2
的结果是'422'
。
- 因为
综上所述,obj + 2
最终结果是'422'
。