代码之家  ›  专栏  ›  技术社区  ›  FrenkyB

调用不带括号的jquery扩展

  •  1
  • FrenkyB  · 技术社区  · 6 年前

    我把jQuery扩展写成这样:

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

    }

    我用这个称呼:

    $().GetBootstrapDeviceSize()
    

    有没有办法像这样调用同一个函数:

    $.GetBootstrapDeviceSize()
    

    或者甚至像这样:

    $.GetBootstrapDeviceSize
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   T.J. Crowder    6 年前

    有没有办法像这样调用同一个函数:

    $.GetBootstrapDeviceSize()
    

    是的,穿上它 $ ,不在 $.fn :

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

    或者甚至像这样:

    $.GetBootstrapDeviceSize
    

    是的,但这可能不是最佳实践。你可以通过创建 吸气剂 为了那个财产 $ :

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

    然后访问 $.GetBootstrapDeviceSize 会运行函数并给出返回值。我可能会叫它 BootstrapDeviceSize 不过,因为你访问它的时候好像它不是一种方法,所以名词而不是动词是有意义的。