![](/img/trans.png)
[英]Why can't I use Array.join.call in place of Array.prototype.join.call
[英]What does Array.prototype.join.call do in the background for a string?
var a = "foo";
var c = Array.prototype.join.call( a, "-" ); // 'f-o-o'
第二行代碼是如何工作的? 我沒有看到將字符串轉換為數組然后再次轉換回來,這是在后台發生的嗎? 我遇到過這種代碼,很奇怪,一個接受字符串的數組方法。
請參閱Array.prototype.join
的規范(如下) 。 它不要求它操作的this
是一個數組,只需要它有一個length
和名稱,如0
、 1
等。 字符串可以,因此join
可以處理字符串。
從規范:
注 2:
join
函數是有意通用的; 它不要求它的this
值是一個Array
對象。 因此,它可以轉移到其他種類的對象中作為方法使用。
這是規范中的完整算法:
"length"
)).設為ToLength ( Get ( , "length"
))。","
.如果未定義,則讓為單元素字符串","
。"0"
).讓為Get ( , "0"
)。1
.讓為1
。字符串是類似數組的對象,因為它具有屬性length
,並且您可以使用[]
訪問其元素(字符),因為您可以對其應用大多數數組操作操作。
Function.prototype.call()
調用給定函數的函數,使用第一個參數作為this
並使用流參數作為普通參數。
作為那個Array.prototype.join.call(a, "-")
將在你的情況下調用對象a
上的函數join
字符串。
字符串是類數組對象。 類數組對象提供對元素和屬性長度的索引訪問。 你可以在這里閱讀更多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.