Ali*_*eza 5 javascript arrays string constructor object
为什么在JavaScript中{} + {}变成空字符串"[object Object][object Object]"却[] + []变成空字符串""?它们不是JavaScript中的两个对象吗?那么,串联的结果为何不同?有什么特殊原因吗?
为什么结果不是这样"[object Array][object Array]"?
当+与物体使用的对象被强制为字符串,结果连接起来。
当将普通对象转换为字符串时,将得到[object Object]:
console.log(
String({})
);Run Code Online (Sandbox Code Playgroud)
另一方面,当数组变成字符串时,在内部.join(',')会在数组上调用该数组,并用逗号将所有元素连接在一起。但是,如果数组中不存在任何元素,则合并结果为空字符串。
只是出于好奇(不要在实际代码中执行此操作!),如果删除Array.prototype.join,String(someArr)将不再能够调用.join,结果将是[object Array],因为被转换为字符串的对象的构造函数名为Array:
delete Array.prototype.join;
console.log(String([])); // Result: [object Array]Run Code Online (Sandbox Code Playgroud)
Look at the results in your browser console, not the snippet console
(because removing Array.prototype.join breaks the snippet console)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |