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

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

image.png

阅读 1.4k
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]
推荐问题