SORU
14 AĞUSTOS 2011, Pazar


nasıl Dizi yapıyor.prototip.dilim.() Ara işi?

Tartışmalar gerçek bir dizi yapmak için kullanılır biliyorum, ama Array.prototype.slice.call(arguments) kullanırken ne oluyor anlamıyorum

CEVAP
14 AĞUSTOS 2011, Pazar


Kaputun altında neler .slice() normalde denir, this Bir Dizi, ve sonra o Dizi yineler ve işini yapar.

Nasıl .slice() this Bir Dizi işlevi nedir? Ne zaman çünkü

object.method();

...object otomatik method() this değeri olur. Bu yüzden:

[1,2,3].slice()

...[1,2,3] Dizi .slice() 16 *değeri olarak ayarlanır.


Ama eğer this değeri olarak başka bir şey yerine olsaydın ne olurdu? Nasıl olsa senin yerine .length sayısal bir özellik, ve sayısal endeksleri özellikleri bir grup var ne gibi çalışması gerekir. Bu nesne türü genellikle bir denirdizi gibi nesne.

.call() .apply() yöntemleri verel ilebir fonksiyon this değerini ayarlayın. Yani eğer bir .slice() 23 *değerini ayarlayındizi gibi nesne, .slice()varsayalımbir Dizi çalışma ve bu işi halleder.

Örnek olarak bu düz nesne.

var my_object = {
    '0': 'zero',
    '1': 'one',
    '2': 'two',
    '3': 'three',
    '4': 'four',
    length: 5
};

Bu belli ki bir Dizi değil, ama eğer sen-ebilmek set olarak this değer .slice(), o zaman sadece iş, çünkü göründüğü kadar gibi bir Dizi için .slice() düzgün çalışmıyor.

var sliced = Array.prototype.slice.call( my_object, 3 );

Örnek:http://jsfiddle.net/wSvkv/

Konsolda gördüğünüz gibi, sonuç beklediğimiz bir şey

['three','four'];

Bu .slice() this değeri arguments bir nesne geçince ne olur yani. arguments .length bir özelliği vardır ve sayısal endeksleri bir grup, .slice() sadece eğer gerçek bir Dizi üzerinde çalışıyor sanki onun iş hakkında gider çünkü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • justintimberlakeVEVO

    justintimber

    2 EYLÜL 2009
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006