浅析JavaScript对象转换成原始值

yizhihongxing

JavaScript 中的对象可以通过调用 ToPrimitive 转换成原始值。当 JavaScript 引擎需要将一个对象转换为原始值时,会先调用这个对象的 valueOf 方法,如果返回值不是原始值,再去调用对象的 toString 方法。如果这两个方法都不能返回原始值,那么会抛出一个 TypeError 异常。

具体而言,ToPrimitive 函数具有以下操作步骤:

  1. 如果原始值为 Symbol 类型,直接返回原始值;
  2. 如果对象具有 valueOf 方法且其返回值为原始值,则返回该原始值;
  3. 否则,如果对象具有 toString 方法且其返回值为原始值,则返回该原始值;
  4. 否则,抛出一个 TypeError 异常。

下面看两个示例:

示例一
var obj = {
    valueOf: function() {
        return 100;
    },
    toString: function() {
        return '200';
    }
};

console.log(obj + 50); // 150

在这个示例中,首先会调用对象的 valueOf 方法,由于 valueOf 方法返回的是原始值 100,因此直接将其作为加法运算的操作数,最终结果为 150。

示例二
var obj = {
    toString: function() {
        return 'hello';
    }
};

console.log('msg:' + obj); // msg:hello
console.log(`msg:${obj}`); // msg:hello

在这个示例中,由于对象的 valueOf 方法未定义,因此会直接调用对象的 toString 方法,返回的原始值为字符串 'hello'。最终结果为 'msg:hello'。

需要注意的是,在进行加法运算时,如果其中一个操作数为字符串类型,则会将另一个操作数也转换为字符串类型,而不是数字类型。因此,在示例二中,${obj} 实际上就是将对象转换为了字符串类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析JavaScript对象转换成原始值 - Python技术站

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

相关文章

  • js字符编码函数区别分析

    JS字符编码函数区别分析 在 JavaScript 中,有几个字符编码相关的函数。本篇文章将详细分析它们的区别。 escape() escape() 函数将非 ASCII 字符和一些 ASCII 字符(如空格、句点、斜杠等)转换为一种特殊的编码格式,比如 %20 代表空格。常用于将一些特殊字符转换为 URL 字符串。 const str = ‘Hello, …

    JavaScript 2023年5月19日
    00
  • 用原生JS对AJAX做简单封装的实例代码

    关于用原生JS对AJAX做简单封装的实例代码,具体使用步骤如下: 1. 创建XMLHttpRequest对象 首先,我们需要在JavaScript中,创建一个XMLHttpRequest对象。XMLHttpRequest对象是AJAX的核心,它提供了与服务器交互的能力。 var xhr=null; if(window.XMLHttpRequest) { xh…

    JavaScript 2023年6月11日
    00
  • express异步函数异常捕获示例详解

    下面将详细讲解“express异步函数异常捕获示例详解”的完整攻略。 什么是异步函数异常捕获 当我们在使用异步函数的时候,如果出现异常错误,如果不进行捕获错误会导致整个应用程序宕机,这会对我们的应用程序和用户造成不便和不良影响。所以很有必要对异步函数的异常进行捕获,防止代码运行出现异常。 express应用中的异常捕获 在express中,我们可以使用try…

    JavaScript 2023年5月28日
    00
  • js、jquery图片动画、动态切换示例代码

    下面是关于 “js、jquery图片动画、动态切换示例代码” 的详细攻略。 1. 简介 首先,图片动画是网页设计中非常重要的一部分,能够为网页提供更加生动、具有吸引力的效果。而 JavaScript 和 jQuery 是实现图片动画的最好选择。 2. 实现图片动画的具体代码 下面我们以两个示例代码的形式,帮助你快速学习如何使用 JavaScript 和 jQ…

    JavaScript 2023年6月10日
    00
  • JS实现点击登录弹出窗口同时背景色渐变动画效果

    JS实现点击登录弹出窗口同时背景色渐变动画效果可以分为以下几个步骤: HTML结构的修改:需要在HTML中添加一个按钮和一个弹窗,同时要添加一个全屏蒙层,作为背景色渐变的动画效果。 <button id="loginBtn">登录</button> <div id="loginModal"…

    JavaScript 2023年6月11日
    00
  • JavaScript判断浏览器运行环境的详细方法

    确定当前用户的浏览器环境是一个常见的任务,可以使用不同的方法来完成这项工作,其中包括用户代理字符串检测,嗅探浏览器功能和使用第三方库等。 以下是几种常见的检测浏览器环境的方法: 1.用户代理字符串检测 用户代理字符串(User-Agent String)是一个由浏览器向服务器发送的 HTTP 头字段,它包含了浏览器的名称、版本、操作系统等信息。通过检查用户代…

    JavaScript 2023年6月10日
    00
  • js实现倒计时及时间对象

    下面是详细讲解“JS实现倒计时及时间对象”的完整攻略。 时间对象 在 JavaScript 中,可以使用内置的时间对象 Date 来处理日期和时间。所以,我们可以借助 Date 对象来实现倒计时。 获取当前时间 首先,我们需要获取当前的时间。使用 new Date() 可以获取当前的日期和时间。 let now = new Date(); // 获取当前时间…

    JavaScript 2023年5月27日
    00
  • django框架cookie和session用法实例详解

    下面我就来详细讲解“django框架cookie和session用法实例详解”的完整攻略。 简介 在Web开发中,cookie和session是两个常用的用于存储客户端状态的方式。在django框架中,cookie和session都有着非常广泛的应用。 其中,cookie是一种存储在用户本地浏览器中的数据,它可以用于识别用户身份、记录用户访问网站的历史记录等…

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