Доступ к функциям и свойствам пользовательских объектов jQuery - PullRequest
3 голосов
/ 03 сентября 2011

Скажем, я создаю объект так:

$.myObject = function(parameter){
    var defaults = {
        start: '1'
    };

    options = $.extend(defaults, options);

    function doSomething(){
        console.log('BOO');
    }
}

Как я могу получить доступ к функции и получить доступ к свойствам извне? Они кажутся приватными (проблема закрытия?).

Нужно ли определять функцию снаружи, чтобы сделать их общедоступными? т.е.

$.myObjectFunction = function doSomething(){
    console.log('BOO');
}

Для того, чтобы вызывать его глобально как $ .myObjectFunction () из консоли в firefox / chrome.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Вот пример.

(function ($) {
    $.myObject = function (options) {
        var opts = $.extend({}, $.myObject.defaults, options),
        privateMethod = function (msg) {
            alert(opts.start + ': ' + msg);   
        };

        return {
            publicMethod: function (msg) {
                privateMethod(msg);
            }
        }
    };
    $.myObject.defaults = {
        start: '1'
    };

})(jQuery);

$(function () {
    $.myObject().publicMethod('One');
    $.myObject({'start': '100'}).publicMethod('Two');
    $.myObject.defaults.start = '1000';
    $.myObject().publicMethod('Three');
    $.myObject().privateMethod('Four');
});
1 голос
/ 03 сентября 2011

Здесь вы можете найти множество примеров работы с классами в JavaScript

function myObject(options) {
    var defaults = {
        start: '1'
    };

    options = $.extend(defaults, options);

    this.doSomething = function () {
        console.log('BOO');
        console.log(options.start);
    }
}

используя:

new myObject().doSomething()
new myObject({start:'100'}).doSomething()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...