3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
1.如何防止js的變數污染:我們知道,在文件中直接定義的變數跟函數(不嵌套在任何域底下的)都是屬於全局的,也就是都在當前頁面的window變數底下。比如最開始我們都會這麼寫:function main{}var i;最普通的像這樣,都是全局的。我們都可以這樣訪問它們,①直接訪問i,main等;②使用window["i"], window["main"]等;③使用window.i,window.main等。、這樣在代碼邏輯過長,項目較大,多人協作時,定義過多的全局變數很有可能造成全局變數衝突,也就是全局變數污染問題。下面是兩種方式:對於web前端的學習有不懂的,或者不知道學習路線,不知道學習方法,不知道該如何紮實能找到工作的朋友,我還是要推薦下我自己建的前端學習群:477149581,首先你要是前端黨,其次不管你是小白還是大牛,我都挺歡迎,小白嘛,主動點多問問題也就學好了,群里每天分享乾貨,包括我自己最近花了一星期整理的一份適合2017年自學的最新web前端資料,送給大家,歡迎初學和進階中的小夥伴。①定義全局變數命名空間:var animal={};animal.dog={ name:"xiaohei",age:"5",weight:"13kg"};animal.cat={name:"xiaobai",age:"4",weight:"8kg"};②利用匿名函數將腳本包裹起來:(function{var animal={};var name="aa";animal.dog=function{return name;};window.animals=animal;});2.命名空間(直接抄寫網上):實現命名空間機制:使用方式:3.原生ajax請求寫法:現在我們基本是用jQuery封裝的ajax,但是原生的呢。下面就是摘抄的實現方式。首先我們需要創建XMLHttpRequest對象,但是,大家知道IE和其它支持是不一樣的。所以,先做個判斷。var xmlHttp;function createxmlHttpRequest {if (window.ActiveXObject) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE} else if (window.XMLHttpRequest) {xmlHttp=new XMLHttpRequest; //非IE}這樣就創建好了一個XMLHttpRequest對象。這就是個get請求:function doGet(url){// 注意在傳參數值的時候最好使用encodeURI處理一下,以防出現亂碼createxmlHttpRequest;xmlHttp.open("GET",url);xmlHttp.send(null);xmlHttp.onreadystatechange = function {if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {alert('success');} else {alert('fail');}}}這就是個POST請求:function doPost(url,data){// 注意在傳參數值的時候最好使用encodeURI處理一下,以防出現亂碼createxmlHttpRequest;xmlHttp.open("POST",url);xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttp.send(data);xmlHttp.onreadystatechange = function {if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {alert('success');} else {alert('fail');}}}下面是一個仿照jQuery的ajax的請求封裝:var createAjax = function{var xhr=null;try {xhr=new ActiveXObject("microsoft.xmlhttp"); // IE系列瀏覽器} catch(e1) {try{xhr=new XMLHttpRequest; // 非IE瀏覽器} catch(e2) {window.alert("您的瀏覽器不支持ajax,請更換!");}}return xhr;};var ajax=function(conf){var type=conf.type; // type參數,可選var url=conf.url; // url參數,必填var data=conf.data; // data參數可選,只有在post請求時需要var dataType=conf.dataType; // datatype參數可選var success=conf.success; // 回調函數可選if (type == null) {type="get"; // type參數可選,默認為get}if (dataType == null){dataType="text"; // dataType參數可選,默認為text}var xhr = createAjax;xhr.open(type,url,true);if (type=="GET" || type=="get") {xhr.send(null);} else if (type=="POST" || type=="post") {xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");xhr.send(data);}xhr.onreadystatechange=function{if ((xhr.readyState == 4) && (xhr.status == 200)) {if (dataType=="text" || dataType=="TEXT"){if (success != null){success(xhr.responseText); // 普通文本}} else if(dataType=="xml" || dataType=="XML"){if (success != null){success(xhr.responseXML); // 接收xml文檔}} else if (dataType=="json" || dataType=="JSON"){if (success != null) {success(eval("("+xhr.responseText+")")); //將json字元串轉換為js對象}}}};};使用方式如下:ajax({type:"post",//post或者get,非必須url:"test.jsp",//必須的data:"name=dipoo&info=good",//非必須dataType:"json",//text/xml/json,非必須success:function(data){//回調函數,非必須alert(data.name);}});

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦