这可能是一个简单的问题,有一个非常复杂的答案,或者一些我完全错过的非常简单的问题,但是,在Prototype和jQuery等库中,$
全局变量怎么样?是一个包含函数的对象,例如:
$.ajax.get(…);
也是一个函数本身,如:
$("…");
任何帮助,甚至是指向更具说明性的网站的指针都会非常棒,我只是好奇!
例如,如果我创建了一个包含子对象($
)的函数(ajax
),如:
var $ = function() {
this.ajax = {};
return this;
};
我可以像ajax
一样访问$().ajax
对象,但不像$.ajax
那样,你如何获得它们?
答案 0 :(得分:7)
在JavaScript中,函数是对象,对象可能有属性,所以它只是该语言的另一个很棒的部分!
var f = function(x) { return x; };
f.attr = "a";
f.attr; // => "a"
f(123); // => 123
答案 1 :(得分:3)
所有javascript函数都是javascript对象。
var obj = {};
var func = new function(){};
obj.property = "";
func.property = "";
您可以在此处了解所有相关信息:http://ejohn.org/apps/learn/#16
答案 2 :(得分:0)
var $ = (function () {
var keys = { a: 1, b: 2, c: "Bob" },
external_func = function (key, val) {
if (val === undefined) { return keys[key]; }
keys[key] = val;
extend(external_func, { key : val });
};
function extend (obj, keys) {
var key;
for (key in keys) {
if (keys.hasOwnProperty(key)) {
obj[key] = keys[key];
}
}
}
extend(external_func, keys);
external_func.setKey = function (key, val) { keys[key] = val; this[key] = val; };
return external_func;
}());
jQuery比这更大,但这可能是一个如何构建一个保存键和值的系统的示例,您可以将其读作函数调用或属性。
例如,如果密钥中包含URL中所有查询的细分,或者包含该页面的所有Cookie,则可以执行以下操作:
曲奇( “登录”); 饼干[“登录”]; Cookie.username;
查询( “PAGE_NAME”); 查询[ “PAGE_NAME”]; Query.page_name;
您必须确保将其视为只读,除非您使用该功能,使用附加到该功能的setCookie
方法,或者您只定位支持原生getter的浏览器和塞特斯。