我正在编写我的第一个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/