3

モバイル用のライブラリを作成しようとしていますが、jqueryのように関数およびオブジェクトとしてオブジェクトを呼び出せるようにしたいと考えています。

例:

var test = function(elm) {

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

そして私はそれをこのように呼ぶことができるようにしたいと思います:

test("#id");

そしてこのように:

test.ajax(opts);

LE: 迅速な対応をありがとうございました!

4

2 に答える 2

5

JavaScriptでは、関数は実際にはコードが付加された単なるオブジェクトです。

したがって、プレーンオブジェクトの代わりに:

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

...関数を使用します:

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

どちらの場合も、にアクセスできますtest.ajax。この関数の追加機能は、を呼び出すことができることですtest

于 2013-01-01T20:28:54.897 に答える
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');  
}
于 2013-01-01T21:56:22.827 に答える