Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在变体上扩展jQuery功能细节_Javascript_Jquery - Fatal编程技术网

Javascript 在变体上扩展jQuery功能细节

Javascript 在变体上扩展jQuery功能细节,javascript,jquery,Javascript,Jquery,我知道我可以用两种形式扩展jQuery: (一) (二) 和自定义函数 jQuery.variation2 = { something: function(){ var execute = function(){ ... } } } I use this like $.variation2.something() 我的问题是: 在第一种情况下,我无法在没有选择器的情况下调用函数;此代码导致错误$.variation1

我知道我可以用两种形式扩展jQuery:

(一)

(二)

和自定义函数

jQuery.variation2 = {
    something: function(){
        var execute = function(){
            ...
        }
    }
}

I use this like $.variation2.something()  
我的问题是:

  • 在第一种情况下,我无法在没有选择器的情况下调用函数;此代码导致错误$.variation1();这是正确的吗?也就是说,有没有一种方法可以在没有元素选择器的情况下调用这些函数
  • 在第二种情况下,如何使用选项初始化variation2?我之所以这样问是因为在MooTools中,在创建类时,我们可以初始化类,如下所示:
  • var jsClass=新类({ 实现:[选项], 选项:{ }, 初始化:函数(选项){ 此选项。设置选项(选项); } });

    我们调用它,并使用自定义选项进行初始化,如

    新jsClass({option1:this,option2:that})

    因此,在MooTools示例中,类实例默认执行选项。回到问题上来,在jQuery中有类似的方法吗


    提前感谢

    正如您所注意到的,这两种变化是截然不同的
    jQuery.fn
    提供应用于jQuery
    QuerySet
    对象(应用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() {
                ...
            },  ...
        };
    })();