我真的想要实现这样的东西。
myVar.myAnotherVar;
myVar.myMethod();
myVar("sample text");
这就是jQuery实现它的方式
jQuery.fn;
jQuery.ajax();
jQuery("#myBtn");
如何实现类似jQuery的东西,它可以保存单个命名空间中的所有内容?它与原型有关吗?如何使用变量同时作为函数调用?
谢谢:)
答案 0 :(得分:6)
JavaScript中的函数是对象,您可以像任何其他对象一样随意添加属性:
function foo() {
// Code for when you call `foo` goes here
}
foo.someData = "bar";
foo.someFunction = function() {
// Code for when you call `foo.someFunction` goes here
};
jQuery的功能稍微复杂一些,有点不寻常,有几种方式:
jQuery
函数(通常别名为$
)只是对创建新对象的构造函数的调用的包装。 (构造函数称为init
。)
他们在名为init
的{{1}}函数的属性中添加了对prototype
函数的jQuery
属性的引用。这两个属性(fn
和jQuery.fn
)指的是当您使用init.prototype
时将成为实例原型的对象。
他们也从new init
引用了同一个对象,即使jQuery.prototype
未用作构造函数。这样jQuery
将为$() instanceof $
。
但是你不必为了做你所描述的事情而做那些事情。当然,可以,但你不必这样做。
如果你想做这两件事,基本结构如下:
true