*防止JS全局污染

javaScript 可以随意定义保存所有应用资源的全局变量。但全局变量可以削弱程序灵活性,增大了模块之间的耦合性。
在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法

一.定义全局变量命名空间
只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下

var person1={
    name:‘jacksplwxy‘,
    language:‘中文‘,
    intro:function(){
        console.log(‘我的名字是:‘+this.name);
    },
    speak:function(){
        console.log(‘我能说:‘+this.language);
    },
    init:function(){
        this.intro();
        this.speak();
    }
};
person1.init();

更多实例可查看这里

二 . 利用匿名函数将脚本包裹起来

var person2=(function(){
    var name=‘jacksplwxy‘;
    var language=‘中文‘;
    var intro=function(){
        console.log(‘我的名字是:‘+name);
    }
    var speak=function(){
        console.log(‘我能说:‘+language);
    }
    return function(){
        intro();
        speak();
    }
})();
person2();

或者

var person3=(function(){
    var name=‘jacksplwxy‘;
    var language=‘中文‘;
    var intro=function(){
        console.log(‘我的名字是:‘+name);
    }
    var speak=function(){
        console.log(‘我能说:‘+language);
    }
    return {
        init:function(){
            intro();
            speak();
        }
    }
})();
person3.init();
时间: 2024-08-10 04:53:38

*防止JS全局污染的相关文章

JS函数的应用 --- 立即执行函数、全局污染、闭包、沙箱、递归

一.立即执行函数 --- IIFE 立即执行函数的集中表现形式: 立即执行函数的特点: 二.JS 全局污染 为什么会造成全局污染? JS 没有块级作用域,在函数外定义的变量,均为全局变量: 全局变量过多会削弱程序的灵活性,增大了模块之间的耦合度,多人协作开发会导致变量冲突,造成环境污染. 耦合度:即模块之间的依赖关系:控制关系.调用关系.数据传递关系: 划分模块准则:高内聚低耦合 如何解决全局污染? 1. 命名空间 2. 立即执行函数(里面创建的变量,为局部变量) (function(){})(

防止js全局变量污染方法总结

javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法 一.定义全局变量命名空间 只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下 var MY={}; my.name={ big_name:"zhangsan", small_name:"lisi" }; my.work

[转] 防止js全局变量污染方法总结

javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法 一.定义全局变量命名空间只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下 var MY={};my.name={big_name:"zhangsan",small_name:"lisi"};my.work={scho

7:Node.js 全局对象

原文出自:http://www.w3cschool.cc/nodejs/nodejs-global-object.html Node.js 全局对象 JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量. 在浏览器JavaScript 中,通常window 是全局对象, 而Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 我们在Node

警惕javascript变量的全局污染

作用域的概念总是和变量形影不离,它不是javascript语言独有的概念,只是其运用上与其他大型语言略有不同,JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑. JavaScript对作用域的运用与其他语言略有不同,然而总体概念是一致的.作用域限定了javascript文档中的各个资源的可用范围,决定了你定义变量的位置.使用一个匿名函数来容纳所需的变量就是个很好的方法.所有在函数中定义的变量都只应该在该函

js全局函数

http://www.w3cschool.cc/jsref/jsref-obj-global.html 以前没搞懂JS的全局函数,全局函数和window对象的函数不一样.全局函数不属于任何一个内置对象. JS包含以下7个全局函数,用于一些常用的功能:escape(),eval(),isNan(),isFinite(),parseFloat(),parseInt(),unescape(); escape(string),对string进行编码,这样就可以在所有计算机上读取该字符串. 该方法不会对

javascript防止变量全局污染

前段时间封装了一个函数,当时考虑的没那么多,最近回头看这个封装的函数时发现其实造成了全局污染.原先的函数是这样的: function interval(fn, ms){ !this.fn?(this.fn = fn,this.ms = ms,this.step = 0):null this.step++ this.step%(this.ms * 60) == 0?this.fn():null requestAnimationFrame(interval) } interval(() => { c

.NET解决JS引用 全局污染等问题

在需要引用的ASPX页面上加上这句话 <!--#include file="/js/inc.html"--> 创建一个HTML页面,结构如下 <script src="/js/ArrayList.js"></script> <script src="/js/main.js"></script> 通过include引用HTML页面,HTML页面来引用JS文件来控制JS文件的引用. 定义JS

Node.js 全局对象

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量. 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它. 全局对象与全局变量 global 最根本的作用是作为全局变量的宿主.按照