Javascript自执行函数和jQuery扩展方法

我们通常把js代码写在一个单独的js文件中,然后在页面中引入文件。但是,有时引入变量名或函数名与其他js代码冲突。那么,如何解决这个问题呢范围隔离。在js中,作用域是按函数划分的,js代码包对函数的调用可以避免变量/函数名冲突,但这并不是因为函数本身没有任何出错的危险,包装等可能的解决方案:自函数名、执行函数。

自执行函数是用一对括号将匿名函数包装起来,然后立即执行括号(括号),因为函数没有名称,它实现了作用域的绝对隔离和函数名的冲突:


(函数(){())
console.log(东西);
})();



For example, we write some JS logic in the custome.js file and encapsulate it in the function init.We use the self - execution function to wrap up the function init that we define, like the following.


(函数(){())

函数init(){
console.log('execute init…;
}

init();
});




当我们介绍custome.js在HTML中,自我执行的功能是立即执行,然后执行init函数内部定义:

然而,自执行函数立即执行的属性使调用变得困难,通过定义jQuery扩展方法,可以解决这个问题,并且可以获得自执行函数调用和执行的主动权。

首先,让我们来看一下定义jQuery扩展方法的基本形式:


JQuery.extend({
MyMethod:函数(){
console.log(东西);
}
});



这样,上面所定义的方法可以被美元。MyMethod()或()jquery.mymethod。

还有另一种定义jQuery扩展方法的方法。


JQuery.fn.extend({
MyMethod:函数(){
console.log(东西);;
}
});



通过定义为上述扩展的方法,它需要通过jQuery选择器,如由标签选择器$(按钮)。MyMethod(args)

在理解了js自执行函数和jQuery扩展方法之后,我们将两者结合起来。

接下来,我们使用自执行函数立即执行的特性来定义jQuery扩展方法:


(功能(JQ){

函数init(){
console.log(东西);
}

Jq.extend({
MyMethod:函数(){
init();
}
})
}(jQuery);




这种自我执行的函数接收到jQuery对象作为参数,并定义了jQuery扩展方法MyMethod内部,实现了真正的逻辑代码初始化函数。

呼叫:






$(函数(){())
MyMethod()美元;
});






解释uff1a

当引入jQuery文件时,jQuery对象是全局可用的;

然后,我们介绍了自定义js文件custome.js,其中自执行函数接收到jQuery对象作为参数,并立即执行,并在MyMethod定义jQuery扩展方法。

然后我们可以通过调用$执行初始化功能。memethod()()()或jquery.mymethod页面加载完成后



以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。