var a = "foo";
var c = Array.prototype.join.call( a, "-" ); // 'f-o-o'
Run Code Online (Sandbox Code Playgroud)
第二行代码如何工作?我没有看到任何字符串转换为数组然后再转换回来,这是在后台发生的吗?我遇到过这种代码,这很奇怪,一个接受字符串的数组方法.
请参阅(下面)的规范Array.prototype.join .它不要求在它的上是一个数组操作,仅仅是它有一个和属性如姓名,等.字符串,所以可以在字符串上工作.thislength01join
从规格:
注2:该
join功能是故意通用的; 它不要求它的this值是一个Array对象.因此,它可以转移到其他种类的对象以用作方法.
这是规范中的完整算法:
"length")).","."0").1.