js: Object - toString & valueOf

Object:
Object 实例 的 toString valueOf 可自定义
Object 未重写时, 返回:“[object Object]” 和 对象本身
在 == 左方时 会先调用 valueOf 当返回为对象本身, 若右方不为 Object, 再调用 toString

aObj = {
  toString: function(){
    return "2";
  }
};
console.log(aObj  == 2);   // true
console.log(aObj  == "2");   // true

aObj = {
  valueOf: function(){
    return "2";
  }
};
console.log(aObj  == 2);   // true
console.log(aObj  == "2");   // true

aObj = {
  toString: function(){
    return "2";
  },
  valueOf: function(){
    return 1;
  }
};
console.log(aObj  == 2);   // false
console.log(aObj  == "2");   // false
console.log(aObj  == 1);   // true
console.log(aObj  == "1");   // true

aObj = { };
console.log(aObj  == "[object Object]");   // true

Array:
数组的 toString 返回各元素(包括多维)的字符串,以逗号分隔  valueOf 返回数组对象本身

aArr = [ [1,2], "xx"];
console.log(aArr  == "1,2,xx");   // true


RegExp:
正则的 toString 返回正则的字符串,  valueOf 返回正则对象本身

aReg = new RegExp("[a]", "gi");
console.log(aReg  == "/[a]/gi");   // true


Function :
Function的 toString 返回Function的定义字符串,  valueOf 返回Function对象本身
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值