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

雁过留痕

## 一、不管你`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]`。

阅读量:1

点赞量:0

问AI