对象的方法

  所有Javascript对象都从Object.prototype继承属性(除了那些不通过原型显示创建的对象)。这些继承属性主要是方法,而有些方法非常好用且使用广泛,但一些类会重写它。

toString() 方法

  没有参数,将返回一个调用该方法的对象值的字符串。在需要将对象转换为字符串的时候,JavaScript都会调用该方法。比如,当使用 “+” 运算符连接一个字符串和一个对象时,或者在希望使用字符串的方法中使用了对象时都会调用toString()。

  由于默认的toString()方法并不会输出很多有用的信息,因此很多类都带有自定义的toString()。例如,当数组转换为字符串的时候,结果是一个数组元素列表,只是每个元素都转换成了字符串,再比如,当函数转换成字符串的时候,得到函数的源代码。

toLocaleString() 方法

  返回一个表示这个对象的本地化字符串。Object中默认的toLocaleString() 方法并不做任何本地化自身的操作,它仅调用toString()方法并返回对应值。Date和Number类对toLocaleString()方法做了定制,可以用它对数字、日期和时间做本地化的转换。Array类的toLocaleString()方法和toString()方法很像,唯一的不同是每个数组元素会调用toLocaleString()方法转换为字符串,而不是调用各自的toString() 方法。

toJSON() 方法

  Object.prototype实际上并没有定义toJSON方法,但对于需要执行序列化的对象来说,JSON.stringify() 方法会调用toJSON()方法。如果在待序列化的对象中存在该方法,则调用它,返回值即是序列化的结果,而不是序列化原始的对象

var a = {
  toJSON: function() { return 1; },
};
JSON.stringify(a);  // => "1"
var a = {
  x: function() { return 1; },
};
JSON.stringify(a);  // => "{}"

valueOf() 方法

valueOf() 方法和toString() 方法非常类似,但往往当Javascript需要将对象转换为某种原始值而非字符串的时候才会调用它,尤其是转换为数字的时候。如果在需要使用原始值的上下文中使用了对象,Javascript就会自动调用这个方法。有些内置类自定义了valueOf()方法(比如Date.valueOf())。

参考文献: JavaScript权威指南 第6版

原文地址:https://www.cnblogs.com/wssjzw/p/10745953.html