Dizisi

2016-04-03 37 views
0
var hello = 'hello'; 
Array.prototype.unshift.call(hello, '11') // gives error 
Array.prototype.join.call(hello, ', ') // works, why?? 

birisi neden eser .join ve .unshift değil nedenDizisi

+0

Bunun ne yapılmasını beklediniz? –

cevap

3

dizeleri değişmez olduğu için, ve unshift çalışır (bir dizin atamak bana açıklayabilir gibi dize mülkiyet),

"hello"[4] = '1' 

Referans: http://www.ecma-international.org/ecma-262/6.0/#sec-string-exotic-objects:

A String nesnesi, String değerini kapsülleyen ve String değerinin tek tek kod birimi öğelerine karşılık gelen sanal tamsayı dizinlenmiş veri özelliklerini gösteren egzotik bir nesnedir. Egzotik Dize nesneleri, her zaman değeri, kapsüllenmiş String değerindeki kod birimi öğelerinin sayısı olan "uzunluk" adlı bir veri özelliğine sahiptir. Hem kod birimi veri özellikleri hem de "uzunluk" özelliği yazılabilir değil ve yapılandırılamaz.

join şey atamak ve sadece özelliklerini okur bu nedenle .length olan herhangi bir nesne ile çalışır etmez.