某某茶叶有限公司欢迎您!
金沙棋牌在线 > 服务器&运维 > javascript自执行函数之伪命名空间封装法_javascript技巧_脚本之家

javascript自执行函数之伪命名空间封装法_javascript技巧_脚本之家

时间:2019-11-27 20:39

自执行函数:自动执行的函数。它在被解释时就已经在运行了。一般函数都是在被调用时才会执行的。 自执行函数的一般格式:; 而且,自执行函数中一般都会有一个function() {}形式的匿名函数。 下面的代码在window对象中创建一个命名空间 mySpace,并把自执行函数中的方法封装在mySpace命名空间之下,以便于我们调用这个自执行函数中的一些功能。 复制代码 代码如下: { //根据id获取对象 function $ { return document.getElementById; } //内部函数,在外层是不可以调用的 function _setStyle(id, styleName, styleValue) { $.style[styleName] = styleValue; } //创建伪命名空间 window.mySpace = {}; //将内部函数_setStyle封装在mySpace命名空间内 //调用时,使用window.mySpace.setStyle(id, styleName, styleValue) window.mySpace.setStyle = _setStyle; })(); //下面是测试代码 window.onload = function() { //将id为test的对象的文字颜色设置为红色 window.mySpace.setStyle("test", "color", "#f00"); } 那么这种封装方式到底有何好处呢? 当然就是保护了自执行函数内的方法、变量、属性等。这样代码更加安全了。 如果不使用这种方法,那么,下面的方法也可以实现的。 复制代码 代码如下: window.mySpace = {}; window.mySpace.$ = function { return document.getElementById; } window.mySpace.setStyle = function(id, styleName, styleValue) { window.mySpace.$.style[styleName] = styleValue; } //下面是测试代码 window.onload = function() { window.mySpace.setStyle("test", "backgroundColor", "#f00"); window.mySpace.setStyle("test", "color", "#fff"); } 上面的代码和自执行函数实现的功能其实是一样的。 比较之后,我们可以发现,第二方法更加的直观,易于理解。但是少了封装过程,代码完全裸露在外。

function  { play=function.val; } window.wbLogin = play;});

在 C++ 和 C# 中,命名空间用于尽可能地减少名称冲突。例如,在 .NET Framework 中,命名空间有助于将 Microsoft.Build.Task.Message 类与 System.Messaging.Message 区分开来。JavaScript 没有任何特定语言功能来支持命名空间,但很容易使用对象来模拟命名空间。如果要创建一个 JavaScript 库,则可以将它们包装在命名空间内,而不需要定义全局函数和类,如下所示:

像上边这样的代码为什么要把window, jQuery对象传进去?

var MSDNMagNS = {};MSDNMagNS.Pet = function { // code here };MSDNMagNS.Pet.prototype.toString = function() { // code };var pet = new MSDNMagNS.Pet;

为什么要传入 jQuery?

命名空间的一个级别可能不是唯一的,因此可以创建嵌套的命名空间:

通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个 JS 框架必须支持的功能,jQuery 被应用在成千上万的 JavaScript 程序中,必须确保 jQuery 创建的变量不能和导入他的程序所使用的变量发生冲突。

var MSDNMagNS = {};// nested namespace “Examples”MSDNMagNS.Examples = {};MSDNMagNS.Examples.Pet = function { // code };MSDNMagNS.Examples.Pet.prototype.toString = function() { // code };var pet = new MSDNMagNS.Examples.Pet;

为什么要传入 window?

可以想象,键入这些冗长的嵌套命名空间会让人很累。 幸运的是,库用户可以很容易地为命名空间指定更短的别名: