SORU
7 EKİM 2011, Cuma


Neden JSHİNT bu kesin bir ihlali olduğundan şikayet ediyor mu?

Bu bir Strict Violation using this keyword and revealing module pattern kopyası olabilir diye düşünüyorum

Bu kod var:

function gotoPage(s){
    if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);}
}

function pageChange(event, sorter) {
    var dd = event.currentTarget;
    gotoPage.call(sorter, dd[dd.selectedIndex].value);
}

Ve JSHİNT (JSLİNT) şikayet ediyor. "Sıkı ihlali" vurgulu bir çizgi:.. yazıyor

enter image description here

Function.call() ve örneğini başvuru sonra, benim kullanımı uygunsuz bir şekilde mi?

Bu kötü bir üslup olarak kabul edilir?

CEVAP
7 EKİM 2011, Cuma


"Mümkün olduğunca sıkı ihlali içinde bir şey this o kullanıyor çünkü", söyleyebilir kadarıyla bir yöntem değildir. JSHint diyor

Non-katı mod, arama gotoPage(5) Genel nesne (window tarayıcı) this bağlamak istiyorum. Sıkı modu, this olacak undefined ve bela olur.

Muhtemelen, ** 10 bağlı bir bağlamda bu işlev çağrısı ne demek, gotoPage.bind(myObj)(5) örneğin gotoPage.call(myObj, 5). Eğer öyleyse, herhangi bir hata olmayacak gibi JSHint yok sayabilirsiniz. Ancak, kodunuzu kimseye belli bir yöntemi olmayan bir şey içinde this kullanımı oldukça kafa karıştırıcı, çünkü okuma, belirsiz olduğunu söylüyor. Parametre olarak sadece nesne geçmek için daha iyi olurdu:

function gotoPage(sorter, s) {
    if (s <= sorter.d && s > 0) {
        sorter.g = s;

        sorter.page((s - 1) * sorter.p.size);
    }
}

function pageChange(event, sorter) {
    var dd = event.currentTarget;
    gotoPage(sorter, dd[dd.selectedIndex].value);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007