访问jQuery自定义对象函数和属性

3

假设我这样创建了一个对象:

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

    options = $.extend(defaults, options);

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

如何从外部访问函数并访问属性?它们似乎是私有的(闭包问题?)。

我必须在外部定义函数才能使它们公共化吗? 例如:

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

为了在Firefox/Chrome控制台中全局调用它,可以使用$.myObjectFunction()。

我怎样才能访问这个函数? - jeeden
2个回答

2
这里有一个例子。
(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

这里你可以找到很多关于如何在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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接