js中toString()函数与valueOf()函数使用与区别

yizhihongxing

js中 toString() 函数与valueOf() 函数使用与区别

在JavaScript中,几乎所有的数据类型都是对象,除了null和undefined。这些对象的实例都继承自一个共同的Object原型对象,因此它们也会同时继承Object原型对象上的方法和属性。其中,toString()函数和valueOf()函数是两个非常重要的方法,下面我们来仔细了解一下它们的使用和区别。

toString() 函数

toString()函数是Object原型对象上的一个方法,它将一个对象的值转换为一个字符串。通常情况下,我们调用一个对象的toString()方法时,它将返回的是"[object Object]"这样的字符串,这并不是我们想要的结果。因此,对于不同类型的对象,我们需要分别处理它们的toString()方法。

对于字符串、数字、布尔值和函数对象,它们的toString()方法的返回结果都比较好理解。例如:

var str = "Hello World";
console.log(str.toString()); // "Hello World"

var num = 123;
console.log(num.toString()); // "123"

var bool = true;
console.log(bool.toString()); // "true"

function foo() {
  console.log("foo");
}
console.log(foo.toString()); // "function foo() {\n  console.log(\"foo\");\n}"

对于数组和对象来说,它们的toString()方法的结果通常比较特殊。对于数组对象来说,它的toString()方法将返回一个字符串,其中包含了数组中所有元素的值,多个值之间用逗号分隔。例如:

var arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3"

对于对象来说,默认情况下调用toString()方法将返回"[object Object]"。如果我们想要自定义对象的toString()方法,可以通过将对象的toString属性设置为一个函数来实现。例如:

var obj = {
  name: "Tom",
  age: 18,
  toString: function () {
    return "My name is " + this.name + ", age is " + this.age;
  }
};
console.log(obj.toString()); // "My name is Tom, age is 18"

valueOf() 函数

valueOf()函数也是Object原型对象上的一个方法,它将一个对象转换为它的原始值。对于数值、字符串和布尔类型的对象,它们的valueOf()方法的返回结果就是对应的基本数据类型值,例如:

var num = new Number(123);
console.log(num.valueOf()); // 123

var str = new String("Hello World");
console.log(str.valueOf()); // "Hello World"

var bool = new Boolean(true);
console.log(bool.valueOf()); // true

对于对象和数组来说,它们的valueOf()方法的结果通常并不是我们想要的值。对于数组对象来说,它的valueOf()方法返回的是数组对象本身,而不是它的元素值。例如:

var arr = [1, 2, 3];
console.log(arr.valueOf()); // [1, 2, 3]

对于对象来说,默认情况下调用valueOf()方法将返回对象本身。如果我们想要自定义对象的valueOf()方法,可以通过将对象的valueOf属性设置为一个函数来实现。例如:

var obj = {
  name: "Tom",
  age: 18,
  valueOf: function () {
    return this.age;
  }
};
console.log(obj.valueOf()); // 18

这里的valueOf()方法将返回对象obj中age属性的值,而不是对象本身。

区别

总的来说,toString()函数和valueOf()函数都是用来将对象转换为基本数据类型值的方法,但是它们的返回结果是不同的。toString()方法的返回结果通常是一个字符串,它将对象转换为符合人类可读的格式,而valueOf()方法的返回结果通常是一个基本数据类型值,它将对象转换为符合计算机运算的格式。

此外,对于很多JavaScript内置对象来说,它们默认的toString()和valueOf()方法的返回结果都不是我们想要的值。因此,我们可以通过自定义这些对象的toString()和valueOf()方法来获得我们想要的结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中toString()函数与valueOf()函数使用与区别 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue 禁用浏览器的前进后退操作

    要禁用浏览器的前进后退操作,可以使用Vue-Router提供的Navigation Guards对用户的操作进行拦截。 具体实现步骤如下: 1. 在Vue-Router中使用Navigation Guards 在new VueRouter的时候,我们可以添加beforeEach函数,该函数会在每次路由切换之前调用。我们可以在该函数中进行拦截判断。 示例代码如…

    JavaScript 2023年6月11日
    00
  • javascript的正则匹配方法学习

    JavaScript的正则匹配方法学习 正则表达式是一种用于匹配字符串的模式,它在JavaScript中非常常见。在本文中,我们将介绍怎样在JavaScript中使用正则表达式进行字符串匹配。 1. 创建正则表达式 在JavaScript中,可以使用正则表达式字面量或RegExp对象来创建正则表达式。正则表达式字面量可以使用斜杠”/”包围,其中间为正则表达式…

    JavaScript 2023年6月10日
    00
  • 手机端实现Bootstrap简单图片轮播效果

    针对“手机端实现Bootstrap简单图片轮播效果”的攻略,以下是完整的步骤说明: 一、引入Bootstrap库 在实现轮播效果之前,需要引入Bootstrap的库文件,这里以CDN引入的方式为例,将以下代码添加至HTML头部: <link rel="stylesheet" href="https://cdn.bootcd…

    JavaScript 2023年6月1日
    00
  • vue elementui 实现搜索栏公共组件封装的实例代码

    下面我将为你讲解”vue elementui 实现搜索栏公共组件封装的实例代码”的完整攻略。 一、需求分析 在实现搜索栏公共组件封装之前,我们需要先确定组件的需求,包括: 搜索栏包含的输入字段类型(文本输入、下拉框选择等); 搜索栏提交查询的方式(点击查询按钮、按下Enter键等); 查询参数的名称和格式; 查询结果的展示方式。 例如我们可以将搜索栏中的输入…

    JavaScript 2023年6月10日
    00
  • ES6解构赋值(数组,对象,函数)使用详解

    ES6 解构赋值详解 在ES6中,解构赋值是一种方便快捷地从数组、对象、函数等中提取数据的方式。解构赋值可以大大简化代码,使其更加具有可读性和易于维护。 数组的解构赋值 在ES6中,我们可以通过数组的解构赋值,方便快捷地将数组的值放入变量中。例如: // ES6数组解构赋值示例 let [x, y] = [1, 2]; console.log(x); // …

    JavaScript 2023年6月10日
    00
  • vue-router后台鉴权流程实现

    下面我将为你详细讲解“vue-router后台鉴权流程实现”的完整攻略。 背景 Vue.js 是一款轻量级的前端框架,而 Vue Router 是 Vue.js 的官方路由库。在 Vue.js 应用开发中,Vue Router 经常被用于实现前端路由管理,来实现 SPA(单页应用)应用。但是,在实际开发中,我们常常需要做到前端用户权限管理,来保护我们的业务安…

    JavaScript 2023年6月11日
    00
  • PHP中CURL的几个经典应用实例

    下面是详细讲解“PHP中CURL的几个经典应用实例”的完整攻略。 1. 什么是CURL? CURL是一种在网络通信中使用的工具,它支持多种网络协议,可以用来HTTP、FTP、SMTP等服务的客户端程序。在PHP中,可以使用CURL库来实现与远程服务器的数据传输。 2. 安装CURL扩展 在使用PHP中的CURL扩展之前,需要先安装CURL扩展,以确保PHP支…

    JavaScript 2023年6月11日
    00
  • jquery tools之tabs 选项卡/页签

    下面我将为您讲解“jquery tools之tabs选项卡/页签”的完整攻略。 1. 简介 jQuery Tools是一个jQuery插件集合,其中包含了一些常用的UI组件,它们可以方便地通过jQuery来实现。 Tabs(选项卡/页签)是jQuery Tools的一个组件,它可以帮助我们实现简单易用的选项卡功能。 2. 引入jQuery和jQuery To…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部