◆

JavaScript valueOf 方法返回值详解

2023-02-02 01:370

valueOf

返回值为该对象的原始值。

默认情况下,valueOf 方法由 Object 后面的每个对象继承。 每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始值,则 valueOf 将返回对象本身。

JavaScript 的许多内置对象都重写了该函数,因此,不同类型对象的 valueOf() 方法的返回值和返回值类型均可能不同。

对象返回值
Array返回数组对象本身。
Boolean布尔值。
Date存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function函数本身。
Number数字值。
Object对象本身。这是默认情况。
String字符串值。
OtherMath 和 Error 对象没有 valueOf 方法。

示例

// Array:返回数组对象本身
var array = ['ABC', true, 12, -5];
console.log(array.valueOf() === array); // true

// Date:当前时间距 1970 年 1 月 1 日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
console.log(date.valueOf()); // 1376838719230

// Number:返回数字值
var num = 15.2654;
console.log(num.valueOf()); // 15.2654

// 布尔:返回布尔值 true 或 false
var bool = true;
console.log(bool.valueOf() === bool); // true

// new 一个 Boolean 对象
var newBool = new Boolean(true);
// valueOf() 返回的是 true,两者的值相等
console.log(newBool.valueOf() == newBool); // true
// 但是不全等,两者类型不相等,前者是 boolean 类型,后者是 object 类型
console.log(newBool.valueOf() === newBool); // false

// Function:返回函数本身
function foo() {}

console.log(foo.valueOf() === foo); // true
var foo2 = new Function('x', 'y', 'return x + y;');
console.log(foo2.valueOf());
/*
 ƒ anonymous(x,y
 ) {
 return x + y;
 }
 */

// Object:返回对象本身
var obj = { name: '张三', age: 18 };
console.log(obj.valueOf() === obj); // true

// String:返回字符串值
var str = 'http://www.xyz.com';
console.log(str.valueOf() === str); // true

// new 一个字符串对象
var str2 = new String('http://www.xyz.com');
// 两者的值相等,但不全等,因为类型不同,前者为 string 类型,后者为 object 类型
console.log(str2.valueOf() === str2); // false
💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEJavaScript valueOf 方法返回值详解加载中