Javascript jQuery如何使jQuery对象同时成为函数和对象属性?

Javascript jQuery如何使jQuery对象同时成为函数和对象属性?,javascript,jquery,function,object,properties,Javascript,Jquery,Function,Object,Properties,很长一段时间以来,我一直在想jQuery如何既可以是函数又可以是对象属性 您可以像函数jQuery(…)一样使用它,也可以像属性jQuery.ajax(…)一样使用它 如何在Javascript中实现这样的功能?因为在Javascript中,函数是可以具有属性的对象: function test() { ... } test.a = function () { ... }; test.a(); // totally valid 函数是javascript中的对象。所以你可以有你的主要功能 v

很长一段时间以来,我一直在想jQuery如何既可以是函数又可以是对象属性

您可以像函数jQuery(…)一样使用它,也可以像属性jQuery.ajax(…)一样使用它


如何在Javascript中实现这样的功能?

因为在Javascript中,函数是可以具有属性的对象:

function test() { ... }

test.a = function () { ... };
test.a(); // totally valid

函数是javascript中的对象。所以你可以有你的主要功能

var $ = function() {  alert('wat'); }
然后扩展它

$.fadeTo = function() { alert('fadeto'); }

我认为,就代码概念而言,jQuery到底是什么的概念相当混乱。我浏览了这个链接,它以非常简单的方式解释了jQuery体系结构:


因此,简言之,$是名为“jQuery”的JavaScript函数的别名,而使用点符号(如$.trim())调用的方法是“JavaScript”jQuery函数上的静态方法。请注意,函数继承自JavaScript中的对象,因此函数是JavaScript中的对象。

mhm,我明白了。。。Javascript类没有静态/动态方法的概念?@SBSTP:Javascript根本没有类,它是一种原型语言,而不是基于类的语言。它有构造函数。构造函数创建对象。啊,我没有意识到这一点。问题:在您的示例中,
test.a
可以在初始的
function test(){…}
声明中定义,还是必须
test.a
单独声明才能在
test()之外访问?换句话说,是否可以从
test(){…}
声明中定义
a
属性,以便从
test()
外部仍然可以访问该属性?我似乎在其他任何地方都找不到答案。