2016-04-04 20 views
0

Bu, Addy Osmani'nin kitabından aldığım kod parçasından biri ve nasıl çalıştığını anlayamadı mı?Bu kod pasajı nasıl çalışıyor (modül kalıbı) (Addy Osmani)?

function library(module) { 
    $(function() { 
    if (module.init) { 
     module.init(); 
    } 
    }); 
    return module; 
} 

var myLibrary = library(function() { 
    return { 
    init: function() { 
     // module implementation 
    } 
    }; 
}()); 
+2

Daha spesifik olmanız gerekecek. Neyi anlamadın? –

+0

sadece jquery'nin hazır etkinliğine aktardığınız lib'in init() yöntemini ekler. – dandavis

+0

Aslında bütün şeyin nasıl çalıştığını bilmiyor muydu? – user3516328

cevap

3

kitaptan kodu tanımlanmış bir değişken ad alanında kütüphane fonksiyonları depolamak sağlayacak bir modül yükleyici vardır. library işlevi, bir modül (bir nesne olması gerekir) alır ve init yöntemini (kütüphanenin gerekli kısımlarını başlatmak için) başlatırsa ve başlatılan modülü döndürürse, üzerinde bir init özelliği olup olmadığını kontrol eder. arayan kişiye.

Kodun, karıştığınız şey olduğuna inandığım ikinci kısmı, kukla bir modülü kitaplık işlevine geçirmek için anonim bir işlev kullanır. kod: ancak, İşte

var someModule = { 
    init : function() { 
    // module implementation 
    } 
} 
var myLibrary = library(someModule) 

biz önceki kod parçacığı oluyor neyin aynıdır kütüphanesinden() e someModule nesneyi geçmesi:

var myLibrary = library(function() { 
    return { 
     init: function() { 
     // module implementation 
     } 
    }; 
}()); 

gibi bir şey olan aynı mı Önceki kod blocunda, modül nesnesini kapsülleyen anonim bir işlev yürütüyoruz, böylece ek geçici yerel değişkenler oluşturmamız gerekmiyor.

Açıklama yapan başka bir şeye ihtiyacınız varsa lütfen şu adrese başvurunuz:

+0

Bu kod satırı ne yapıyor? $ (işlev() { ....... }); – user3516328

+1

Bu, dom hazır olduğunda bir kod bloğu yürütür, böylece kütüphane işlevi çağrıldığında ve dom, bloğun yürütülmesine hazır olduğunda – Alex