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

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日

相关文章

  • javascript中的几个运算符

    下面是Javascript中的几个运算符的详细讲解。 算术运算符 算术运算符是用来执行数学运算的运算符。Javascript中包含了基础的加、减、乘、除、求余运算符。 var x = 10; var y = 3; console.log(x + y); // 13 console.log(x – y); // 7 console.log(x * y); //…

    JavaScript 2023年5月18日
    00
  • 详解JavaScript的定时器

    下面是详解JavaScript的定时器的完整攻略: 什么是JavaScript定时器 JavaScript定时器是用来控制代码在指定的时间间隔内执行的方法。它们是非常有用的,可以用于制作动画、轮播图、定时更新时间等。JavaScript中有两种类型的定时器:setInterval()和setTimeout()。 setInterval() setInterv…

    JavaScript 2023年5月27日
    00
  • 原生js+ajax分页组件

    下面我详细讲解一下如何实现“原生js+ajax分页组件”。 前置知识 在实现分页组件之前,需要对以下几个知识点有一定的了解。 原生JS的DOM操作 Ajax异步请求及响应 分页算法 分页算法 分页算法是分页组件实现的核心。下面介绍两种常见的分页算法。 基本分页算法 基本分页算法的实现非常简单,直接根据当前页码和每页显示数量计算出起始记录的位置和结束位置,再将…

    JavaScript 2023年6月11日
    00
  • 分享15个JavaScript的重要数组方法

    下面是详细讲解“分享15个JavaScript的重要数组方法”的完整攻略,具体分为以下几个部分: 1. 前言 数组是 JavaScript 中最常用的数据类型之一,常用于存储一系列的数据元素。在 JavaScript 中,数组提供了一系列强大的方法,帮助开发者更加高效地处理数据。下面将主要介绍 15 个 JavaScript 的重要数组方法。 2. Java…

    JavaScript 2023年5月18日
    00
  • 一个基于vue3+ts+vite项目搭建初探

    下面是关于“一个基于vue3+ts+vite项目搭建初探”的完整攻略。 1. 安装vite 首先,我们需要安装vite,可以使用npm或yarn进行安装,输入以下命令: npm install -g vite # npm安装 # 或 yarn global add vite # yarn安装 这里我们选择使用npm进行安装。 2. 创建项目 在一个合适的目录…

    JavaScript 2023年6月11日
    00
  • P3P 和 跨域 (cross-domain) cookie 访问(读取和设置)

    P3P(Platform for Privacy Preferences)是一个Internet标准,它在Web服务器和浏览器之间传递标准格式的隐私策略。P3P帮助网站明确并公开其隐私政策,并允许用户在浏览网站时了解网站将如何使用其个人信息。跨域cookie指的是在某个域名下,通过设置cookie使得另一个域名下的网站也可以共享这个cookie,即跨域共享c…

    JavaScript 2023年6月11日
    00
  • JavaScript中Array方法你该知道的正确打开方法

    JavaScript中Array方法你该知道的正确打开方法 数组(Array)是在JavaScript中最常用的数据类型之一,因此熟练掌握数组的相关操作非常重要。本文将会介绍JavaScript中常用的数组(Array)方法,包括: push()方法 pop()方法 shift()方法 unshift()方法 splice()方法 concat()方法 sl…

    JavaScript 2023年5月27日
    00
  • JavaScript中Array对象用法实例总结

    JavaScript中Array对象用法实例总结 数组(Array)是JavaScript中常用的数据结构,由多个元素组成,每个元素可以是不同的数据类型。在JavaScript中,Array是一种内置对象,提供了多种方法和属性,使其使用非常灵活。 创建数组 JavaScript中创建一个数组可以使用以下两种方式: 使用字面量创建数组 let arr = [1…

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