理解JavaScript中123['toString'].length和[]['toString'].length的差异?

为什么123['toString'].length===1,[]['toString'].length===0

image.png

阅读 1.2k
1 个回答

一、不管你123['toString']还是[]['toString']拿到的都是一个叫做toString的方法,这个能理解吧?

但是区别是

  1. 123['toString']拿到的是Number.prototype.toString()
  2. []['toString']拿到的是Array.prototype.toString()

二、取一个函数/方法的length属性是什么意思

参考Function:length,

Function 实例的 length 数据属性表示函数期望的参数数量。

所以

  1. Number.prototype.toString()期望1个参数,所以是1

    一个整数,范围在 2 到 36 之间,用于指定表示数字值的基数。默认为 10。
  2. Array.prototype.toString()期望0个参数,所以是0

    Array 对象覆盖了 Object 的 toString 方法。数组的 toString 方法实际上在内部调用了 join() 方法来拼接数组并返回一个包含所有数组元素的字符串,元素之间用逗号分隔。如果 join 方法不可用或者不是函数,则会使用 Object.prototype.toString 来代替,并返回 [object Array]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题