шаблон дизайна javascript, не возвращающий intellisense для некоторых объектов - PullRequest
0 голосов
/ 21 марта 2011

Я возиться с шаблоном javascript, который позволит мне использовать пространство имен для моего кода и определять внутренние сочетания клавиш вне глобальной области видимости, чтобы уменьшить объем ввода, который мне придется делать.

Такие вещи, как $ вместо jQuery или $ messageType вместо messages.messageType.

Хотя шаблон, кажется, работает хорошо, я потерял определенную функциональность intellisense сейчас в visual studio 2010.

например. Моя тестовая функция ниже выдаст предупреждение «об успехе», но мой intellisense не будет перечисляться через свойства объекта $ messageType.

Поскольку производительность - это ключ, для меня это большая проблема.

Есть ли что-то, что я упустил, что гуру javascript могут поднять?

Вот jsfiddle , с которым можно поиграть.

; (function (window) {

    // Define a local copy of myObject
    var myObject = function () {
        // The myObject object is actually just the init constructor 'enhanced'
        return new myObject.fn.init();
    },

    // Shortcuts.
    // A central reference to the root messages object
    $messages = null,

    // A central reference to the root messages.messageType object
    $messageType = null;

    myObject.fn = myObject.prototype = {
        init: function () {
            // Initialise the object shortcuts.
            $messages = this.messages;
            $messageType = this.messages.messageType;
        }
    };

    // Give the init function the myObject prototype for later instantiation
    myObject.fn.init.prototype = myObject.fn;

    myObject.fn.messages = {
        /// <summary>
        /// Provides means to provide feedback message to the client.
        /// </summary>
        messageType: {
            information: "information",
            error: "error",
            success: "success"
        }
    };

    myObject.fn.tester = function () {
        alert($messageType.success);
    };

    // Expose myObject to the global object
    window.myObject = window.$m = myObject();
} (window));

jQuery(document).ready(function () {
    $m.tester();
});

1 Ответ

0 голосов
/ 21 марта 2011

Дох .... Я забыл вернуть объект в моей функции инициализации !!

myObject.fn = myObject.prototype = {
    init: function () {
        // Initialise the object shortcuts.
        $messages = this.messages;
        $messageType = this.messages.messageType;
        // It took jslint ans a cup of coffee to figure this out :)
        return this;
    }
};
...