JS valueOf()方法:返回对象的值
2023-06-13 09:12:01 时间
JavaScript valueOf() 是 Object 的原型方法,它定义在 Object.prototype 对象上,所有 Object 的实例对象都会继承 valueOf() 方法。
valueOf() 方法能够返回对象的值。JavaScript 自动类型转换时会默认调用 valueOf() 原型方法。Object 对象默认 valueOf() 方法返回值与 toString() 方法返回值相同,但是部分类型对象重写了 valueOf() 方法。
valueOf() 的语法格式如下:
object.valueOf()
返回值:返回该对象的原始值。
Date 对象的 valueOf() 原型方法返回值是当前日期对象的毫秒数。
var o = new Date(); //对象实例 console.log(o.toString()); //返回当前时间的UTC字符串 console.log(o.valueOf()); //返回距离1970年1月1日午夜之间的毫秒数 console.log(Object.prototype.valueOf.apply(o)); //默认返回当前时间的UTC字符串
当 String、Number 和 Boolean 对象具有明显的原始值时,它们的 valueOf() 原型方法会返回合适的原始值。
在自定义类型时,除了重写 toString() 方法外,也可以重写 valueOf() 原型方法。这样当读取自定义对象的值时,就能避免返回的值总是 [object Object] 。
function Point (x, y) { //自定义数据类型 this.x = x; this.y = y; Point.prototype.valueOf = function () { //自定义Point数据类型的valueOf()原型方法 return ( + this.x + , + this.y + ) var p = new Point(26, 68); console.log(p.valueOf()); //返回当前对象的值 (26,68) console.log(Object.prototype.valueOf.apply(p)); //默认返回值为 [object Object]
在特定环境下进行数据类型转换时(如把对象转换为字符串),valueOf() 原型方法的优先级要比 toString() 方法的优先级高。因此,如果一个对象的 valueOf() 原型方法返回值和 toString() 方法返回值不同,且希望转换的字符串为 toString() 方法的返回值时,就必须明确调用对象的 toString() 方法。
在下面示例中,当获取自定义类型的对象 p 时,console.log() 方法会首先调用 valueOf() 原型方法,而不是 toString() 方法,如果需要获取该对象的字符串表示,则必须明确调用对象的 toString() 方法。
function Point (x, y) { //自定义数据类型 this.x = x; this.y = y; Point.prototype.valueOf = function () { //自定义Point数据类型的valueOf()方法 return ( + this.x + , + this.y + ) Point.prototype.toString = function () { //自定义Point数据类型的toString()方法 return [object Point] var p = new Point(26,68); //实例化对象 console.log( typeof p = + p); //默认调用valueOf()方法进行类型转换 console.log( typeof p = + p.toString()); //直接调用toString()方法进行类型转换
23187.html
javaJavaScript相关文章
- ajax实现跨域_js跨域请求的三种方法
- java json对象和json字符串互转的方法_js中对象转字符串的方法
- js中splice是什么意思_vue中splice方法
- 用JS获取地址栏url参数的方法_js的url是啥
- js中对数组进行遍历都有哪些方法_js遍历json对象
- 给js对象添加属性和方法属性_js给json对象添加属性
- JS Math对象的常用方法
- 妙用JS获取Oracle信息的快速方法(js获取Oracle)
- 把JS与CSS写在同一个文件里的书写方法
- JS判断对象是否存在的10种方法总结
- js跳出页面的frameset框架示例介绍
- js读写cookie实现一个底部广告浮层效果的两种方法
- js日期对象兼容性的处理方法
- js中settimeout方法加参数的使用实例
- js中把JSON字符串转换成JSON对象最好的方法
- Js中使用hasOwnProperty方法检索ajax响应对象的例子
- js实现键盘控制DIV移动的方法
- js使用Array.prototype.sort()对数组对象排序的方法