Javascript 在变体上扩展jQuery功能细节
我知道我可以用两种形式扩展jQuery: (一) (二) 和自定义函数Javascript 在变体上扩展jQuery功能细节,javascript,jquery,Javascript,Jquery,我知道我可以用两种形式扩展jQuery: (一) (二) 和自定义函数 jQuery.variation2 = { something: function(){ var execute = function(){ ... } } } I use this like $.variation2.something() 我的问题是: 在第一种情况下,我无法在没有选择器的情况下调用函数;此代码导致错误$.variation1
jQuery.variation2 = {
something: function(){
var execute = function(){
...
}
}
}
I use this like $.variation2.something()
我的问题是:
提前感谢正如您所注意到的,这两种变化是截然不同的
jQuery.fn
提供应用于jQueryQuerySet
对象(应用jQuery选择器的结果)的函数集jQuery.*
可以简单地看作是全局静态对象,包括(有时)任何有权访问jQuery对象的人都可以访问的函数
要初始化变体2,我将执行以下操作:
jQuery.variation2 = (function() {
var a = ...;
var b = ...; // other initialization
return {
something: function() {
...
}, ...
};
})();
您可以以类似的方式使用闭包来提供初始化代码。一个依赖于jQuery实例,另一个则不依赖。在每种情况下使用最方便的方法。它类似于“公共”与“静态”的方法。请帮助我澄清:如果是公共的,我可以在任何有jQuery库的地方使用它?就像在定义了jQuery的网页中一样,然后调用$(选择器).variation1();静态,我只能在包装此定义的函数括号内使用?类似于jQuery(document).ready(函数($){jQuery.variation2={…}$.variation2.comething()…});在这里之外没有吗?
jQuery.fn==jQuery.prototype
。如果将方法添加到原型中,它们将依赖于实例。如果将方法附加到构造函数,它们就像“静态”方法一样,不应该依赖于实例。大多数情况下,您希望向原型添加方法。向构造函数中添加方法既不理想也不必要,因为您可以创建自己的对象来保存这些方法。那么我如何传递参数来设置变量呢?啊,我以为您正在寻找一个可以运行初始化代码的地方。我想,您可以将getter/setter/init方法作为返回的{…}
对象的一部分返回。
jQuery.variation2 = (function() {
var a = ...;
var b = ...; // other initialization
return {
something: function() {
...
}, ...
};
})();