Object.prototype.toString为什么要加.call

这篇具有很好参考价值的文章主要介绍了Object.prototype.toString为什么要加.call。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题1:为什么是Object.prototyp不能直接arr.toString

   console.log("arr.toString()", arr.toString());

    const num = 123;
    console.log("num.toString()", num.toString());

	  const fun = () => {
      console.log("fun");
    };
    console.log("fun.toString()", fun.toString());


    const obj = { name: "slx", age: 3434 };
    console.log("obj.toString", obj.toString());

object.prototype.tostring 为什么要加call,javascript,前端

因为Array和Function等的toString方法都重写了,只有Object的没有被重写,所以只有Object.prototype才可以判断数据类型

问题2:为什么后面要加call()

 const arr = [1, 2, 3];
    console.log(
      " Object.prototype.toString(arr)",
      Object.prototype.toString(arr)
    );
    console.log(
      " Object.prototype.toString.call(arr)",
      Object.prototype.toString.call(arr)
    );

object.prototype.tostring 为什么要加call,javascript,前端
如果不加.call()的话,this指向为Object,Object的数据类型自然是Object,所以不管判断啥都是Object;
添加call之后,改变this指向arr.才能得到正确的类型结果

理论上使用apply也是可以的文章来源地址https://www.toymoban.com/news/detail-854056.html

到了这里,关于Object.prototype.toString为什么要加.call的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【typeof instanceof Object.prototype.toString constructor区别】

    它返回的是一个字符串,表示未经过计算的操作数的类型 typeof操作符适合对基本数据类型以及function的检测进行使用,当然null除外,而对于引用数据类型,就比如说Array 和 Object等它是不适用的。 用于检测一个对象在其原型链中中是否存在一个构造函数的prototype属性 左操作数

    2024年02月10日
    浏览(46)
  • 原型链中:为什么Function.proto==Function.prototype?

    背景: 在 JavaScript 中,每个函数(包括构造函数)都是一个对象,而对象都有一个  __proto__  属性,指向它们的原型。当你创建一个函数时,JavaScript 引擎会自动为该函数创建一个原型对象,并将其关联到函数的  prototype  属性上。 解释 根据规范, Function.__proto__  表示  Fu

    2024年02月10日
    浏览(39)
  • Modbus的常见问题解答:多台设备如何连接?为什么要加终端电阻?RS485总线可挂接多少个设备?在RS485通讯中,最大传输距离是多少?

    多台RS485设备如何连接呢? 使用屏蔽双绞线,采用手拉手菊花链式拓扑结构将网关和各串行设备节点连接起来,并在网络起始端和末尾端设备的RS485+和RS485-之间各并接一个120Ω电阻以减少信号在两端的反射。 什么情况下在RS485总线上要增加终端电阻? RS485总线随着传输距离的

    2024年02月10日
    浏览(68)
  • [阅读MDN]之Array.prototype.toString的过程探究

     Array原型对象上的toString方法与Object.prototype上的toString方法不同,它进行了重写。Array.prototype.toString会先查看 执行时上下文 (this)及其原型链上是否具有 join 方法。 若 join 方法存在则会在内部执行 join 方法,类似 this.join(\\\',\\\') 。 若 join 方法不存在则会调用 Object.prototype.to

    2024年02月10日
    浏览(38)
  • Netty为什么高效,为什么这么受欢迎?

    上篇文章通过 Java NIO 的处理流程与 Netty 的总体流程比较,并结合 Netty 的源码,可以更加清晰地理解Netty。本文将结合源码详细解析Netty的高效和强大功能的设计原理,学习 Netty 是如何实现其卓越的性能和功能特性,也希望可以在日后工作中利用到 Netty 的设计思想。 我们先看

    2024年02月12日
    浏览(68)
  • Redis—Redis介绍(是什么/为什么快/为什么做MySQL缓存等)

    一、Redis是什么 Redis 是一种 基于内存的数据库 ,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于 缓存,消息队列、分布式锁等场景 。         Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、

    2024年02月10日
    浏览(66)
  • AIMD 为什么收敛(tcp reno/cubic 为什么好)

    TCP 拥塞控制目标是缓解并解除网络拥塞,让所有流量公平共享带宽,合在一起就是公平收敛。 AIMD(几乎所有与拥塞控制相关的协议或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 为什么收敛?我一般会给出下面的老图: 虽然只展示了两条流的收敛,但 n 条流收敛的展示无非就是将

    2024年02月06日
    浏览(74)
  • tcp 为什么要三次握手,两次不行吗?为什么?

    TCP使用三次握手(Three-Way Handshake)的过程是为了确保双方建立起可靠的通信连接,并在连接的建立过程中协商必要的参数。两次握手是不够的,原因主要有以下几点: 防止已失效的连接请求被接受: 假设有A和B两台主机,A向B发送了一个连接请求,但由于某些原因导致连接建

    2024年02月20日
    浏览(62)
  • 为什么美国加息,会让硅谷银行破产?美联储为什么要加息?

    所有回答由 AI 生产 答 : 美国加息会导致国债利率上升,此时购买国债的银行获得的利息收益会比利率较低时少,因此国债的市场价格就会下降,从而导致银行持有的这些国债资产减值。 答 : 美国加息意味着美国央行(即联邦储备委员会)将提高其官方基准利率,这意味着

    2023年04月23日
    浏览(64)
  • 为什么用python做人工智能,为什么人工智能用python

    大家好,给大家分享一下python人工智能为什么放到最后才学,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! Source code download: 本文相关源码 一、为何人工智能(AI)首选Python? 读完这篇文章你就知道了。我们看谷歌的TensorFlow基本上所有的代码都是C++和Python,

    2024年02月22日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包