我正在编写我的第一个jQuery插件,但我不完全确定扩展声明中应该包含什么,不应该包含什么。

$.fn.myplugin = function () {
    var somevar = this;
    someFunc(somevar);
};
function someFunc() {/*doSomethin'*/};

或者
$.fn.myplugin = function () {
    var somevar = this;
    someFunc(somevar);
    function someFunc() {/*doSomethin'*/};
};

最佳答案



那就是你错了。如果使用不同的库,则可能会覆盖别人的someFunc(),可能会破坏他们为您所做的任何工作。一种更安全的方法是将闭包包装在您的代码周围。

(function(){

$.fn.myplugin = function () {
    var somevar = this;
    someFunc(somevar);
};

function someFunc() {/*doSomethin'*/};

/* Do whatever other things you need someFunc/myplugin for */

})();

这样,您的someFunc就不会受到全局命名空间的影响。

另外,您可能想做的就是将对象的方法公开给外界。请看以下示例:
$.fn.dog = function () {

     this.bark = function() {alert("Woof");};

     return this;
};

var $max = new $('#myDogMax').dog();
$max.bark();

这样可以将函数保留在对象的上下文中,但可以从外部干净地访问它。尽管这通常意味着该方法以某种方式与对象相关。全局编写bark()函数几乎没有意义,因为通常是狗会这样做,而不是浏览器窗口。

关于javascript - 函数应该在jQuery的扩展内部还是外部?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30477483/

10-12 12:56
查看更多