JavaScript调用变量作为对象和函数,如jQuery

时间:2013-01-01 20:14:39

标签: javascript jquery prototype

我正在尝试为移动设备创建一个库,我希望能够像jquery那样将对象称为函数和对象。

示例:

var test = function(elm) {

    this.ajax = function(opt) { ... }
    if ( elm ) {
       var elms = document.querySelectorAll(elm);
    }
}

我希望能够这样称呼它:

test("#id");

并且像这样:

test.ajax(opts);

LE: 谢谢你们的快速反应!

2 个答案:

答案 0 :(得分:5)

在JavaScript中,函数实际上只是附加代码的对象。

所以不是普通的对象:

var test = {};
test.ajax = function() { /* ajax */ };

...使用函数:

var test = function() { /* test */ };
test.ajax = function() { /* ajax */ };

在这两种情况下,您都可以访问test.ajax。该功能的额外功能是您可以拨打test

答案 1 :(得分:1)

或者mabye这样的事情:

Object.prototype.Test = function( method ) {
    var method = method || null;
    var elms   = null;

    /* Methods */
    this.ajax = function(opt){
        console.log('You called ajax method with options:');
        console.log(opt);
    }
    /* Logic */
    if (method in this) this[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    else {
        try {
            elms = document.querySelectorAll(method);
        }
        catch(e) {
            console.log(e.message);
        }
    }

}
window.onload = function() {
    Test('ajax', {'url':'testurl.com'});
    Test('#aid');  
}