Object.prototype.valueOf()

这篇翻译不完整。请帮忙从英语翻译这篇文章

概览

valueOf() 方法返回指定原始值.

语法

object.valueOf()

描述

JavaScript 调用 valueOf() 方法用来把对象转换成原始类型的值(数值、字符串和布尔值) 你很少需要自己调用此函数; JavaScript 会自动调用此函数当需要转换成一个原始值时。

默认情况下, valueOf() 会被每个对象Object继承。每一个内置对象都会覆盖这个方法为了返回一个合理的值,如果对象没有原始值,valueOf() 就会返回对象自己,像下面显示的一样 :

[object Object]
 

你可以在自己的代码中使用 valueOf 方法用来把内置对象的值转换成原始值。 当你创建了自定义对象时,你可以覆盖 Object.prototype.valueOf() 并调用来取代 Object 方法。

覆盖自定义对象的 valueOf 方法

你可以创建一个取代 valueOf 方法的函数,你的方法必须不能传入参数。

假设你有个对象叫 myNumberType 而你想为它创建一个 valueOf 方法。 下面的代码为valueOf方法赋予了一个用户自定义函数:

myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
 

有了这样的一个方法,下一次每当 myNumberType 要被转换为原始类型值时, JavaScript 在此之前会自动调用自定义的 valueOf 方法。

valueOf 方法一般都会被 JavaScript 自动调用,但你也可以像下面代码显示的那样自己去调用:

myNumber.valueOf()
 

Note: Objects 是字符串时,转换是调用 toString() 方法, 这个和 String 对象转换为原始类型的字符串所用的 valueOf是不一样的. 每个对象都自己的字符串转换方法, if only "[object type]". 但是很多对象不转换成 number, boolean, 或 function.

示例:使用 valueOf

o = new Object();
myVar = o.valueOf();      // [object Object]
 
 

规范

Specification Status Comment
ECMAScript 1st Edition. Standard Initial definition. Implemented in JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
Object.prototype.valueOf
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Object.prototype.valueOf
Standard  

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

更多参考

文档标签和贡献者

 此页面的贡献者: helloguangxue, paddingme, teoli, ziyunfei
 最后编辑者: helloguangxue,