我正在尝试为移动设备创建一个库,我希望能够像jquery那样将对象称为函数和对象。
示例:
var test = function(elm) {
this.ajax = function(opt) { ... }
if ( elm ) {
var elms = document.querySelectorAll(elm);
}
}
我希望能够这样称呼它:
test("#id");
并且像这样:
test.ajax(opts);
LE: 谢谢你们的快速反应!
答案 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');
}