Jquery 检查函数是否没有参数在没有大括号的情况下执行它

Jquery check if function has no arguments execute it without curly brackets

我正在开发一个 jQuery 插件并使用这种方式来构建它。

首先这是我的插件功能:

(function($) {
    $.fn.myplugin = function(data) {
        var width = data.width || 'auto',
    };
}(jQuery));

并且我将函数调用到 运行 例如:

$('element').myplugin({width: '100px'});

它工作得很好,但如果我在没有参数和大括号的情况下调用该函数,该函数将不起作用并在浏览器控制台中给出错误:

// Using this way
$('element').myplugin();

// Browser Console
Uncaught TypeError: Cannot read property 'width' of undefined

那么我如何像大多数插件一样使用带参数和不带参数的两种方式(大括号)?

非常感谢任何帮助。

您可以在访问

等属性之前检查 data 是否有值
(function($) {
    $.fn.myplugin = function(data) {
        var width = (data && data.width) || 'auto',
    };
}(jQuery));

我在某些地方使用的另一种做法是分配一个空对象,因为 data 的值没有传递,例如

(function ($) {
    $.fn.myplugin = function (data) {
        data = data || {};
        var width = data.width || 'auto';
        console.log(width)
    };
}(jQuery));