$.fn.myPlugin 与 $.something.myPlugin 关于私有和 public 方法
$.fn.myPlugin vs $.something.myPlugin in regard to private and public methods
所以我似乎找不到关于此的直接答案,只有使用类似 plugin/method 声明的多种变体的模糊示例。我知道说
$.fn.myPlugin
我正在定义一个 public 唯一可用的插件方法,它可以在任何有效的 jQuery 对象上执行,其中 fn 表示原型。那么我的问题是,通过在我的主插件中定义一个方法,就像这样
$.fn.myPlugin.methodName
或者像这样在我的插件之外
$.something.methodName //where 'something' is in place of 'fn'
这会影响它成为 public private/method 吗?如果每个都是不同类型的声明,有什么区别。
我想知道的原因是,为了给这种情况提供一些背景信息,我想定义一个可以调用的主要插件,并且通常具有 运行,但是如果最终用户想重新定义一些我允许 public 的方法,然后他们就可以做到。如果我有任何我不希望用户重新定义的方法,而是提供回调以便他们可以连接到它,那么我想将该方法设为私有。
在 $.whatever
上设置的任何内容都将是 public,因此可以由其他开发人员修改。
如果你想要私有方法,你应该创建一个闭包。
(function() {
function init(jqObj) { ... } // do magic here
$.fn.myPlugin = function() { init(this); } // avoid exposing core method
$.fn.myPlugin.publicMethod = function() { ... }
function privateMethod() { ... }
})();
所以我似乎找不到关于此的直接答案,只有使用类似 plugin/method 声明的多种变体的模糊示例。我知道说
$.fn.myPlugin
我正在定义一个 public 唯一可用的插件方法,它可以在任何有效的 jQuery 对象上执行,其中 fn 表示原型。那么我的问题是,通过在我的主插件中定义一个方法,就像这样
$.fn.myPlugin.methodName
或者像这样在我的插件之外
$.something.methodName //where 'something' is in place of 'fn'
这会影响它成为 public private/method 吗?如果每个都是不同类型的声明,有什么区别。
我想知道的原因是,为了给这种情况提供一些背景信息,我想定义一个可以调用的主要插件,并且通常具有 运行,但是如果最终用户想重新定义一些我允许 public 的方法,然后他们就可以做到。如果我有任何我不希望用户重新定义的方法,而是提供回调以便他们可以连接到它,那么我想将该方法设为私有。
在 $.whatever
上设置的任何内容都将是 public,因此可以由其他开发人员修改。
如果你想要私有方法,你应该创建一个闭包。
(function() {
function init(jqObj) { ... } // do magic here
$.fn.myPlugin = function() { init(this); } // avoid exposing core method
$.fn.myPlugin.publicMethod = function() { ... }
function privateMethod() { ... }
})();