سؤال

أنا أبني أول مكتبة OO JS وأواجه مشكلة صغيرة مع قطعة واحدة من المحتمل أن تكون سهلة للغاية ...

لدي هذا:

var storageLocker = function(catalog){
    if(catalog){
        this.catalog = catalog;
    }
    //my code...
}()

يجب أن أكون قادرًا على القيام بما تفعله المكتبات الأخرى مثل JQuery حيث يمكنك تحديد عنصر (في حالتي ، حدد عنصرًا محليًا) ثم سلسلة وظائف أخرى إليه. كان لدي كل هذا العمل ، ولكن للحصول على أفضل الممارسات وجعلها أكثر قابلية للتوسيع في وقت لاحق وضعتها في وظيفة مجهولة والآن لا يمكنني معرفة كيفية الحصول على بناء جملة:

storageLocker('localStorageItem').save({"item":"an example item saved to localStorageItem"})

لكن الآن إذا قمت بذلك الآن باستخدام بناء الجملة ، فإنه يعيد هذا الخطأ:

Uncaught TypeError: Property 'storageLocker' of object [object DOMWindow] is not a function

أيه أفكار؟

هل كانت مفيدة؟

المحلول

مسح ال () في نهاية جسم الوظيفة.

انت كتبت var storageLocker = function(...) { ... }(), الذي يخلق وظيفة مجهولة ، يسميها, ، ويعين النتائج إلى storageLocker.

يعادل

function anonymous(...) { ... };
var storageLocker = anonymous();

بما أن الوظيفة لا تعيد أي شيء ، storageLocker ينتهي به المطاف undefined, ، وليست وظيفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top