所有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版