理解JavaScript中123['toString'].length和[]['toString'].length的差异?-灵析社区

笑面猫

为什么123['toString'].length===1,[]['toString'].length===0 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/05e181781e07f07b9101e7b791984ff8.png)

阅读量:117

点赞量:0

问AI
一、不管你"123['toString']"还是"[]['toString']"拿到的都是一个叫做"toString"的方法,这个能理解吧? 但是区别是 1. "123['toString']"拿到的是"Number.prototype.toString()" (https://link.segmentfault.com/?enc=7Jzf5vtgHon1HjMrGj%2B98A%3D%3D.cyMzgkwJP%2BIkqKFnulEkHzAfWQ3SS1hDfHP2JeQjWfvQlwewShLAZEiQceKzkoqW8qYK1PMw4PdfvViPkqGulfZ29CXteq%2BWF7%2FEafV8fhfJzd%2BO99SMTOews06Yz%2F0e7OOrv8ikWuFoAQqn06pBuw%3D%3D) 2. "[]['toString']"拿到的是"Array.prototype.toString()" (https://link.segmentfault.com/?enc=kPuaSZmLWwdcaB3oCEt1uw%3D%3D.Y9%2FSJBPNSpvn6Xe%2FXw7J2Kxawf8jyxdTAQ30Wc0A66KgMquY6Ph25b6Xs2DA5HyIpcLyHeqJHz1g40QbjYzoOD2vwYKzFSbcJ9HFLChccFpJ%2FxSG31wgqiQhCHIHZLWl) 二、取一个"函数"/"方法"的length属性是什么意思 参考"Function:length" (https://link.segmentfault.com/?enc=Zj87rAeYszb1q0crxwPBOA%3D%3D.8Rr34HZHJiYinEvnASj7kBCr%2FdewzbWiD1yQ381gBGqgOQgqKtil5M0WU58TQDxFnNc4LnoUssCSKnpybKfDLoH07MIF8%2B0UiZKPqpLXn%2F1tuyo0LTz22hOEzP5zWKGeQBF8XkjuIrbaw7bYesTnnQ%3D%3D), «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]"。»