var foobar = function(param) {
return "FOO : " + foobar.lookup(param);
}
会给你你想要的
要理解这一点,也许您应该看一下 JavaScript 的基础知识。什么是函数如何实例化一个对象以及什么是对象...
要获得像 JQuery 这样的东西并不是很困难,JQuery 主对象只是一个具有“静态”功能的函数。
将变量声明为您所做的函数
var myFunc = function(){};
要使用变量并使用静态内容扩展它,您只需通过
myFunc.staticFunc = function(){};
这并不意味着 myFunc.staticFunc 可以在 myFucn 的任何实例中使用 this 访问,因为您没有将函数添加到原型中......
要定义一个可以实例化的类对象,您还可以将其定义为函数,然后扩展原型。Prototype 是您的类定义,用于构造对象的实例:
myFunc = function(){
// ctor
this.lala = "blub";
} ;
myFunc.prototype.objectFunc = function() {
return this.lala;
}
现在对象 myFunc 有一个函数 objectFunc。我必须用新的初始化它...
alert(new myFunc().objectFunc());
实例可以用这个访问自己...
要执行类似 jquery 的操作,您必须使用一些技巧。你的全局变量必须是一个函数,它返回你的“真实”对象的一个实例,它可以实现任何......
然后你可以像调用函数一样调用你的变量,例如 myFunc()...
希望下面的例子能更清楚地说明它是如何工作的:(可以在 jsfiddle 上找到)
(function ($) {
var myRealObj = function (outId, printText) {
this.text = printText;
$("#" + outId).append("<li>" + this.text + "</li>");
};
myRealObj.prototype.objectFunc = function () {
return this.lala
};
var myFunc = function (out, txt) {
return new myRealObj(out, txt);
};
myFunc.someFunc = function () {
myFunc("out", "myFunc.someFunc got called");
};
myFunc.static = {};
myFunc.static.someFunc = function () {
myFunc("out", "myFunc.static.someFunc got called");
};
window.$$ = myFunc;
})($);
$$("out", "test obj function");
$$.someFunc();
$$.static.someFunc();