SORU
29 EYLÜL 2014, PAZARTESİ


Bu JavaScript desen adı nedir ve neden kullanılır?

THREE.js okuyorum ve fonksiyonlar gibi çok tanımlı bir desen fark:

var foo = ( function () {
    var bar = new Bar();

    return function ( ) {
        //actual logic using bar from above.
        //return result;
    };
}());

(Örnek here raycast yöntemi bakınız).

normalböyle bir yöntem varyasyon bu gibi görünecektir:

var foo = function () {
    var bar = new Bar();

    //actual logic.
    //return result;
};

Bu ilk sürümü karşılaştırılmasınormalvaryasyon, ilk o farklı görünüyor:

  1. Bir kendi kendine çalışan işlevinin sonucu atar.
  2. Bu fonksiyon içinde yerel bir değişken tanımlar.
  3. Bu döndürürgerçekişlevi yerel değişken kullanan mantık içeren.

Ana fark, bar ikinci türevi, bu geçici değişken oluşturur her süre sonra, başlatma görev, sadece ilk varyasyon denir.

Bu yüzden en iyi benim tahminim bar (sadece bir tane olacak) örnek sayısını sınırlar ve böylece bellek yönetim giderleri kaydeder.

Soru:

  1. Bu varsayım doğru mu?
  2. Bu model için bir isim var mı?
  3. Bunu neden kullanılır?

CEVAP
29 EYLÜL 2014, PAZARTESİ


Varsayımlar neredeyse doğru. Hadi o gözden geçirin.

  1. Bir kendi kendine çalışan fonksiyonun geri atar

Bu Immediately-invoked function expression IIFE denir

2=başlangıç
  • Bu fonksiyon içinde yerel bir değişken tanımlar
  • Bu private anahtar kelime ya da işlevsellik, başka sağlamaz gibi JavaScript özel nesne alanlarına sahip.

    3=başlangıç
  • Yerel değişken kullanan gerçek işlevi mantık içeren döndürür.
  • Yine asıl mesele, bu yerel değişken olmasıdırözel.

    Bu model için bir isim var mı?

    AFAIK bu desen Module Pattern diyebilirsin. Alıntı:

    Modül desen", devletin kuruluş ve kapanışları kullanarak. "gizlilik içinde saklar Kamu ve özel yöntemler ve Değişkenler karışımı sarma bir şekilde, küresel kapsamı içine sızması ve yanlışlıkla başka bir geliştirici arayüzü ile çarpışma parçaları korunmasını sağlar. Bu model ile, sadece halka açık bir API, kapatılması içinde her şey özel tutarak döndürdü.

    Bu iki örnek karşılaştırıldığında, ilk kullanılan neden benim en iyi tahmin vardır:

    1. Singleton tasarım deseni uyguluyor.
    2. Belirli bir türde bir nesne ilk örneği kullanarak oluşturulabilir şekilde kontrol edebilirsiniz. Bu noktada yakın bir maç Etkin Java açıklandığı gibi static factory methods olabilir.
    3. Eğer aynı nesne Devlet her zaman ihtiyacın olursa efficient.

    Ama eğer sadece vanilya nesne her zaman ihtiyacı varsa o zaman bu model muhtemelen herhangi bir değer katacak.

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

    YORUMLAR

    SPONSOR VİDEO

    Rastgele Yazarlar

    • EvilControllers

      EvilControll

      20 Ocak 2008
    • MrOctopi

      MrOctopi

      6 Aralık 2010
    • optionalinfo

      optionalinfo

      29 EKİM 2005