javascript 之 命名空间

注意点:

1/IIFE是现代js框架最主要的基础设施,保证变量不被污染。

2/基本上我们把命名空间等同于框架的名字。

 

内容

一、简单的命名空间

复制代码
<input type="button" value="test" onclick="(new namespace()).alert();"/>
        
        <script type="text/javascript">
            function namespace(){
                this.alert=function(){
                    console.log('test');
                }
            }
        </script>
说明:再这里可以看到,namespace方法存在一个函数对象属性,调用时还需要先实例化namespace再调用其自身的alert方法,似乎存在写法略显复杂
测验结果:在这里我曾理解为 onclick 调用mm()方法 function mm(){ namespace().alert(); } 这样写会报错的 ,而且namespace()句话就报错,不存在
分析看到这段代码中存在this对象,让我想起了一篇文章什么情况下使用this,其中需要理解一下,什么是构造函数,需要用到关键字 new,所以这的namespance应该写成Namespance
复制代码

二、简单的命名空间的进化

1
2
3
4
5
6
7
8
9
10
11
<input type="button" value="test" onclick="NS.alert();"/>
         
        <script type="text/javascript">
            (function namespace(){
                this.alert=function(){
                    console.log('test');
                }
                 
                window.NS=this;
            })();
        </script><br>说明:在这里可以看到 使用了window.NS全局变量,同时使用了IIFE,使得调用变得简便一些

三、简单的命名空间的再次美化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(function (){
                this.alert=function(){
                    console.log('test');
                }
                 
                window.NS=this;
            })();<br>在这里使用了匿名函数,namespance是可以拿掉的
 
(function(){
                var _NS=function(){
                 
                }
                _NS.prototype.alert=function(){
                    console.log('test');
                }
                window.NS=new _NS();
            })();<br>在写看扩展方法的时候,可以写在prototype里面

 

 

 

  

 

posted @   zmztyas  阅读(234)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-08-09 ORM框架 之 Entity Framework
点击右上角即可分享
微信分享提示