zoukankan      html  css  js  c++  java
  • javascript之彻底理解valueOf, toString

    参与运算的都是简单类型(一般就字符串和数字), 复杂类型是不参与运算的.

    ***当对象(非简单类型)用作键时,会先调用toString()方法把对象转化成字符串

    var a = {},
         b = {key: 'b'},
         c = {key: 'c'};
    a[b] = 123;
    a[c] = 456;
    console.log(a[b]); // 456

    结果会输出456. 为什么呀。 看下控制台就知道了。因为作何对象用作key时,解析器会先把对象转化成string。

    而对象{}会被转换成字符串[object Object] a[b] = 123 就相当于 a["[object Object]"] = 123;

     b = {toString:()=>{return 5}};

      a[b] = 100;

      console.log(a[5]);    // 100

    ***当对象(非简单类型)用作值时,会先调用valueOf()方法,把对象转化成简单类型

      b = {valueOf: ()=>{return 10}};

     console.log(b + 10);   // 20

     console.log([] == false);  // true 

     []的valueOf()就是[]的toString();

    console.log([].toString() == "");   // true

    如果没有valueOf()方法,或者valueOf()方法不能把对象转化成简单类型,则使用toString()返回的字符串参与运算

    b = {toString: ()=>{return "aaaa"});

    console.log(b + 1); // aaaa1

      

  • 相关阅读:
    Tableau Sheet
    Tableau Dashboard
    jQuery基础
    Tableau学习
    SQL小操作
    C#文件压缩成.Zip
    划水日记之大哥带我走渗透I
    各种推导式
    生成器表达式 (重点)
    生成器 生成器函数
  • 原文地址:https://www.cnblogs.com/honghong87/p/6010689.html
Copyright © 2011-2022 走看看