[勘误]-4-6 对象标签、对象序列化

来源:4-6 [JavaScript]对象标签、对象序列化

Bosn

2015-01-29 05:22

4-6 对象标签、对象序列化 [未更新视频]

var obj = {x:1, y:2};
obj.toString = function(){return this.x + this.y;};
obj.valueOf = function(){return this.x + this.y + 100}
"result" + obj; // 这里是result103,而不是result3

JavaScript中的二元+操作符,若操作数为对象,则尝试转换为基本类型。优先级是先找valueOf,再找toString。

注意到,若valueOf/toString返回的不是基本类型,而是对象,则会被忽略。

var obj = {x:1, y:2};
obj.toString = function(){return this.x + this.y;};
obj.valueOf = function(){return {x : 1}}; // 不可用的valueOf
"result" + obj; // "result3", 因为valueOf无效,使用toString作为结果返回

若valueOf/toString均不可用,则报TypeError异常。

var obj = {x:1, y:2};
obj.toString = function(){return {};}; // 不可用的toString
obj.valueOf = function(){return {x : 1}}; // 不可用的valueOf
"result" + obj; // Uncaught TypeError: Cannot convert object to primitive value


写回答 关注

7回答

  • Bosn
    2015-01-29 05:23:29

    感谢@穹海鸿鹰 网友提出此问题。

  • 9玖月
    2017-08-29 15:56:40

    必须给32个赞,期待Bosn老师的更多分享!

  • yinyun
    2016-11-19 17:21:06

    一语中的

  • 慕九州5609282
    2015-10-31 12:59:58

    4-3 属性操作,17页中间的or 应该是 and

  • lynhao
    2015-07-28 09:06:13

    不错~

  • 赵广杰
    2015-03-19 16:29:52

    二的十次方个赞

  • zzz秦川
    2015-03-07 22:47:43

    赞一个

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281111 学习 · 1020 问题

查看课程

相似问题