◆
JavaScript valueOf 方法返回值详解
valueOf
返回值为该对象的原始值。
默认情况下,
valueOf方法由Object后面的每个对象继承。 每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始值,则valueOf将返回对象本身。
JavaScript 的许多内置对象都重写了该函数,因此,不同类型对象的 valueOf() 方法的返回值和返回值类型均可能不同。
| 对象 | 返回值 |
|---|---|
| Array | 返回数组对象本身。 |
| Boolean | 布尔值。 |
| Date | 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。 |
| Function | 函数本身。 |
| Number | 数字值。 |
| Object | 对象本身。这是默认情况。 |
| String | 字符串值。 |
| Other | Math 和 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

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