Nasıl ve neden 'mu'[''] toUpperCase() JavaScript iş?
JavaScript beni şaşırtmaya ve bunun başka bir örneği duruyor. Ben ilk başta anlayamadım etmeyen bazı kod rastladım. Bu bulmak için geldim debug:
alert('a'['toUpperCase']()); //alerts 'A'
Şimdi bu toUpperCase() string türü bir üyesi olarak tanımlanmış ise açık olmalı, ama bana mantıklı başlangıçta yapmadı.
Her neyse
- bu
toUpperCaseüyesi olduğu için işten 'bir'? Ya da başka bir şey perde arkasında neler var? okuyordum code aşağıdaki gibi bir işlevi vardır
function callMethod(method) { return function (obj) { return obj[method](); //**how can I be sure method will always be a member of obj** } } var caps2 = map(['a', 'b', 'c'], callMethod('toUpperCase')); // ['A','B','C'] // ignoring details of map() function which essentially calls methods on every // element of the array and forms another array of result and returns itAramak için biraz genel bir fonksiyondurHERHANGİ biryöntemleri üzerindeHERHANGİ birnesne. Ama belirtilen yöntem zaten belirtilen nesne örtülü bir üyesi olacak anlamına mı geliyor?
JavaScript fonksiyonları temel kavram ciddi bir anlayış kaçırıyorum eminim. Lütfen bana bu anlamaya yardımcı olur.
CEVAP
Bunu yıkmak.
.toUpperCase()String.prototypebir yöntemdir'a'temel bir değer olduğunu, ama kendi haline dönüştürüldüTemsil nesnesi- Nesne özellikleri/yöntemleri, nokta ve parantez gösterimde erişmek için iki olası gösterimler var
Bu yüzden
'a'['toUpperCase'];
erişim yoluylaköşeli parantez açıklamasımülkiyet üzerinde 12**, String.prototype. Bu özellik başvuru bir bu yanayöntem, () takarak çağırmak edebiliriz
'a'['toUpperCase']();

JavaScript kilitler nasıl çalışır?...
Nasıl bir JavaScript nesnesinin bir öz...
Nasıl JavaScript bir zaman damgası alm...
Nasıl JavaScript panoya kopyalamak mı?...
Nasıl JavaScript yok .prototip çalışma...