Javascript 如何使用jQuery插件参数变量

Javascript 如何使用jQuery插件参数变量,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在尝试构建一个相当基本的jQuery插件(主要是出于学习的原因),在添加limit方法之前,我还没有遇到过错误,这看起来很简单,但是我在控制台中遇到了以下错误 未捕获引用错误:未定义限制 它适用于下面的第二个if方法(用注释标记) 然后运行插件 var query = $(example).query({ shuffle: true, limit: 5 }); 我试图遵循所有的最佳实践,但如果您发现任何奇怪的地方,请告诉我 这是一个包含所有代码的JSFIDLE,您可以在控制

我正在尝试构建一个相当基本的jQuery插件(主要是出于学习的原因),在添加
limit
方法之前,我还没有遇到过错误,这看起来很简单,但是我在控制台中遇到了以下错误

未捕获引用错误:未定义限制

它适用于下面的第二个if方法(用注释标记)

然后运行插件

var query = $(example).query({
    shuffle: true,
    limit: 5
});
我试图遵循所有的最佳实践,但如果您发现任何奇怪的地方,请告诉我

这是一个包含所有代码的JSFIDLE,您可以在控制台中看到错误


添加
选项。
在限制前面

options.limit

您正在创建一个对象,因此为了访问它,您使用对象和变量名,并按句点
object.variable

更正的jQuery代码:

$.fn.query = function(params) {

    // Parameters //
    var options = $.extend({
        'shuffle' : false,
          'limit' : undefined
    }, params),
        output = this;

    // Shuffle //
    if (options.shuffle) {
        output = shuffle(this);
    }

    // Limit // !!!ERROR!!! //
    if (options.limit !== undefined) {
        output = output.slice(0, options.limit);
    }

    return output;
};

添加
选项。
在限制前面

options.limit

您正在创建一个对象,因此为了访问它,您使用对象和变量名,并按句点
object.variable

更正的jQuery代码:

$.fn.query = function(params) {

    // Parameters //
    var options = $.extend({
        'shuffle' : false,
          'limit' : undefined
    }, params),
        output = this;

    // Shuffle //
    if (options.shuffle) {
        output = shuffle(this);
    }

    // Limit // !!!ERROR!!! //
    if (options.limit !== undefined) {
        output = output.slice(0, options.limit);
    }

    return output;
};

试试
console.log
上的
shuffle
,我敢打赌这不是你认为的
shuffle
。@adeneo shuffle一直工作得很好。如果没有限制方法,它可以正常工作,此洗牌是基于另一个人的工作。它不能正常工作,
shuffle
options
对象的一部分,可以通过
options访问。shuffle
,就像
options一样。限制将是!另一方面,shuffle也是一个函数,因此您的if语句总是正确的。请尝试
控制台。在
shuffle
上记录
,我敢打赌这不是您认为的
shuffle
。@adeneo shuffle工作得很好。如果没有限制方法,它可以正常工作,此洗牌是基于另一个人的工作。它不能正常工作,
shuffle
options
对象的一部分,可以通过
options访问。shuffle
,就像
options一样。限制将是!另一方面,shuffle也是一个函数,所以if语句总是正确的。应该这样做吗?我以前没有见过。这是你必须做的:)你把两个参数放在options变量中,这样你就可以通过这种方式访问:)你还需要添加
选项。
在使用
随机播放之前。变量
shuffle
在此上下文中不存在,但
options.shuffle
存在。应该这样做吗?我以前没有见过。这是你必须做的:)你把两个参数放在options变量中,这样你就可以通过这种方式访问:)你还需要添加
选项。
在使用
随机播放之前。变量
shuffle
在此上下文中不存在,但
options.shuffle
存在。