调用不带括号的jQuery扩展

时间:2018-08-03 13:11:19

标签: javascript jquery

我有这样写的jQuery扩展:

$.fn.GetBootstrapDeviceSize = function() {
var cMobileSize = $('#users-device-size').find('div:visible').first().attr('id');
return (cMobileSize === "xs" || cMobileSize === "sm");

}

为此,我使用:

$().GetBootstrapDeviceSize()

有没有办法像这样调用相同的函数:

$.GetBootstrapDeviceSize()

也许甚至是这样:

$.GetBootstrapDeviceSize

1 个答案:

答案 0 :(得分:6)

  

有没有办法像这样调用相同的函数:

$.GetBootstrapDeviceSize()

是的,将其放在$上,而不要放在$.fn上:

    $.GetBootstrapDeviceSize = function() {
 // ^^
    var cMobileSize = $('#users-device-size').find('div:visible').first().attr('id');
    return (cMobileSize === "xs" || cMobileSize === "sm");
    }
  

也许甚至是这样:

$.GetBootstrapDeviceSize

是的,但这可能不是最佳实践。为此,您可以在$上为该属性创建一个 getter

Object.defineProperty($, "GetBootstrapDeviceSize", {
    get: function() {
        var cMobileSize = $('#users-device-size').find('div:visible').first().attr('id');
        return (cMobileSize === "xs" || cMobileSize === "sm");
    }
});

然后访问$.GetBootstrapDeviceSize将运行该函数并为您提供返回值。不过,我可能会把它叫做BootstrapDeviceSize,因为您访问它的方式就好像它不是方法一样,所以名词而不是动词才有意义。