2025年3月23日 星期日 甲辰(龙)年 月廿二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

JS valueOf()方法:返回对象的值

时间:03-07来源:作者:点击数:82

JavaScript valueOf() 是 Object 的原型方法,它定义在 Object.prototype 对象上,所有 Object 的实例对象都会继承 valueOf() 方法。

valueOf() 方法能够返回对象的值。JavaScript 自动类型转换时会默认调用 valueOf() 原型方法。Object 对象默认 valueOf() 方法返回值与 toString() 方法返回值相同,但是部分类型对象重写了 valueOf() 方法。

valueOf() 的语法格式如下:

object.valueOf()

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

示例1

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() 原型方法会返回合适的原始值。

示例2

在自定义类型时,除了重写 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() 方法。

示例3

在下面示例中,当获取自定义类型的对象 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()方法进行类型转换
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门