JavaScript对象的toString和valueOf

  1. toString() 方法返回一个表示该对象的字符串。
    每个对象都有一个 toString() 方法,当对象被表示为文本值时或者当以期望字符串的方式引用对象时,该方法被自动调用。对对象x,toString() 返回 “[object type]”,其中type是对象类型。如果x不是对象,toString() 返回x应有的文本值(不是单纯的加”“)
    可以自己定义一个对象的toString()方法来覆盖它原来的方法。这个方法不能含有参数,方法里必须return一个值。
var x = {};
console.log(x.toString());           
//  [object Object]

//特别的用法
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

//其他类型的toString():
var x = [1,2,3];
x.toString(); //返回'1,2,3'

var x = function(){console.log('lalala')}
x.toString();// 返回'function(){console.log('lalala')}'

var x = 12345;
x.toString();// 返回'12345'

// 自定义toString方法
var a = {};
console.log(a.toString());//输出[object Object]

a.toString = function() {return "a new toString"};

console.log(a + " hello" );//输出a new toString hello

console.log(a + 1);//输出a new toString1

  1. valueOf() 方法返回指定对象的原始值。
    JavaScript 调用 valueOf() 方法用来把对象转换成原始类型的值(数值、字符串和布尔值) 默认情况下, valueOf() 会被每个对象Object继承。每一个内置对象都会覆盖这个方法为了返回一个合理的值,如果对象没有原始值,valueOf() 就会返回对象自身。
    可以自己定义一个对象的valueOf()方法来覆盖它原来的方法。这个方法不能含有参数,方法里必须return一个值
//以下例子均没有原始值,返回这个对象本身
var x = {};
x.valueOf(); //  返回 Object {}

var x = [1,2,3];
x.valueOf(); //返回[1, 2, 3]

var x = function(){console.log('lalala')}
x.valueOf();// 返回 function (){console.log('lalala')}

var x = 12345;
x.valueOf();// 返回 12345

// 以下示例重写了valueOf
var x = {};
x.valueOf = function(){
    return 10;
}
console.log(x+1);// 输出10
console.log(x+"hello");//输出10hello
  1. 调用规则
    1. 如果定义了valueOf,且valueOf返回一个原始值,则优先调用valueOf
    2. 如果没有定义valueOf或者valueOf返回的不是原始值,同时定义了toString(且toString返回一个原始数据类型),则调用toString
    3. 在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript 中,Valueof、toString、toLocaleString 都是 Object 原型链上的方法,可以用来获取对象的值或者转换为不同的字符串形式。 1. valueOf(): valueOf() 方法返回一个对象的原始值。当 JavaScript 需要一个对象的原始值时,它会自动调用 valueOf() 方法。如果没有找到原始值,则会尝试调用 toString() 方法。 例如: ```javascript let num = new Number(10); console.log(num.valueOf()); // 10 ``` 这里的 `valueOf()` 返回了 `num` 的原始值,即 `10`。 2. toString(): toString() 方法返回一个对象的字符串表示形式。当 JavaScript 需要将一个对象转换为字符串时,它会自动调用 toString() 方法。 例如: ```javascript let num = new Number(10); console.log(num.toString()); // "10" ``` 这里的 `toString()` 返回了 `num` 的字符串表示形式,即 `"10"`。 3. toLocaleString(): toLocaleString() 方法返回一个对象的本地化字符串表示形式。当 JavaScript 需要将一个对象转换为本地化字符串时,它会自动调用 toLocaleString() 方法。该方法返回的字符串与所在地区的语言和文化相关。 例如: ```javascript let num = new Number(1234567.89); console.log(num.toLocaleString()); // "1,234,567.89" ``` 这里的 `toLocaleString()` 返回了 `num` 的本地化字符串表示形式,即 `"1,234,567.89"`,与所在地区的语言和文化相关。 总之,这三个方法都是用来获取对象的值或者转换为不同的字符串形式,但是具体使用要看实际情况和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值