亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

網頁制作之Javascript代碼技巧

2024-07-14 08:44:02
字體:
來源:轉載
供稿:網友

  一、簡化代碼

  采用更為簡短的寫法,不僅可以減少輸入的字符數,還可以減少文件大小。大部分采用簡單寫法的代碼,執行效率都有輕微提高。

  1.1 簡化常用對象定義:

  使用 var obj = {}; 代替 var obj = new Object();

  使用 var arr = []; 代替 var arr = new Array();

  1.2 精簡if語句

  三元操作符可以有效精簡只涉及賦值傳值操作的if語句,比如

  var score = 60, grade;

  if (score < 60) {

  grade = “不及格”;

  } else {

  grade = “及格”;

  }

  可以精簡為:

  var score = 60;

  var grade = score < 60 ? “不及格” : “及格”;

  三元操作符也支持嵌套,但是嵌套的層次太多會影響程序的可讀性,這方面要多加斟酌。

  1.3 使用JSON

  JSON是一種輕量級的數據格式,輕量級首先體現在它的結構定義非常簡單。

  var obj = {};

  obj.p1 = ‘a’;

  obj.p2 = ‘b’;

  obj.p3 = ‘c’;

  可精簡為:

  var obj = {

  p1 : ‘a’,

  p2 : ‘b’,

  p3 : ‘c’

  };

  二、使用高效率的代碼

  網上流傳的效率優化文章非常多,一些比較專業的Javascript書籍也談到了不少,因此,這里就只列出一些很少談到的。

  2.1 精簡循環體

  循環的效率很大程度上是由循環體決定的,與之相比,用for還是while的差別就太小了??紤]如下的代碼,其功能是為某一批元素添加事件:

  function addEvent(elems, eventName, handler) {

  for (var i = 0, len = elems.length; i < len; i++) {

  if (window.attachEvent) {

  elems[i].attachEvent(”on” + eventName, handler);

  } else if (window.addEventListener) {

  elems[i].addEventListener(eventName, handler, false);

  }

  }

  }

  循環每執行一次,都會判斷window對象的attachEvent或addEventListener是否存在,其實這個僅判斷一次也就夠了;此外,“”on” + eventName”的字符串拼接也會重復執行。優化如下:

  function addEvent(elems, eventName, handler) {

  var i = -1, len = elems.length;

  if (window.attachEvent) {

  eventName = “on” + eventName;

  while (++i < len) {

  elems[i].attachEvent(eventName, handler);

  }

  } else if (window.addEventListener) {

  while (++i < len) {

  elems[i].addEventListener(eventName, handler, false);

  }

  }

  }

  2.2 盡量使用原生的函數而不是自定義函數

  當你對Javascript的內置類型變量執行某項操作時,你應該先查查這項操作是否有原生的方法。

  要生成一個數組的副本,你會怎么做呢?遍歷數組元素然后逐個賦值到另一個數組,這似乎是唯一的方法。其實,原生的Array.prototype.slice就可以達到復制的目的。這個方法可以從某個數組返回選定的元素,且不影響原來的數組。如果參數留空,返回的就是全部元素。

  Array.prototype.slice還可以對某些不是數組而又能通過數字索引訪問的類型進行操作,比如arguments:

  function test() {

  alert(Array.prototype.slice.call(arguments));

  }

  test(1, 2, 3); // output “1,2,3″

  在Firefox下,它甚至可以對HtmlCollection進行操作??上г贗E下不行。

  另一個例子是數組排序,一般情況下,我們不需要另外寫排序算法,用原生的Array.prototype.sort就夠了。sort方法只有一個參數,該參數是一個函數,決定兩個相比較的元素誰在前誰在后,默認是按照字符順序排序,比如11會排在2之前。要按數字大小排序,可以這樣寫:

  var arr = [11, 2, 0, 12, 33];

  arr.sort(

  function(a, b) {

  return a - b;

  }

  );

  也可以按照對象的某個屬性進行排序:

  var arr = [

  { id : 11 },

  { id : 0 },

  { id : 22 }

  ];

  arr.sort(

  function(a, b) {

  return a.id - b.id;

  }

  );

  2.3 數組去重復

  Array類型并沒有提供去重復的方法,如果要把數組的重復元素干掉,那得自己想辦法:

  function unique(arr) {

  var result = [], isRepeated;

  for (var i = 0, len = arr.length; i < len; i++) {

  isRepeated = false;

  for (var j = 0, len = result.length; j < len; j++) {

  if (arr[i] == result[j]) {

  isRepeated = true;

  break;

  }

  }

  if (!isRepeated) {

  result.push(arr[i]);

  }

  }

  return result;

  }

  總體思路是把數組元素逐個搬運到另一個數組,搬運的過程中檢查這個元素是否有重復,如果有就直接丟掉。從嵌套循環就可以看出,這種方法效率極低。我們可以用一個hashtable的結構記錄已有的元素,這樣就可以避免內層循環。恰好,在Javascript中實現hashtable是極為簡單的,改進如下:

  function unique(arr) {

  var result = [], hash = {};

  for (var i = 0, elem; (elem = arr[i]) != null; i++) {

  if (!hash[elem]) {

  result.push(elem);

  hash[elem] = true;

  }

  }

  return result;

  }

  三、使代碼更易讀、更好維護

  無論是在開發中還是開發后,保持代碼清晰易讀可以更快更準確地修改代碼。

  3.1 連接HTML字符串

  相信做前端開發的朋友都受過這個折磨:連接HTML的時候被可惡的單引號、雙引號搞得頭昏腦脹。比如:

  element.innerHTML = ‘<a href=”‘ + url + ‘” onclick=”alert(” + msg + ‘’);”>’ + text + ‘</a>’;

  這里介紹一個字符串格式化函數:

  String.format = function(str) {

  var args = arguments, re = new RegExp(”%([1-" + args.length + "])”, “g”);

  return String(str).replace(

  re,

  function($1, $2) {

  return args[$2];

  }

  );

  };

  調用方法很簡單:

  element.innerHTML = String.format(’<a href=”%1″ onclick=”alert(’%2’);”>%3</a>’, url, msg, text);

  意思就是用第n個參數把%n替換掉。這樣一來清晰多了吧。

  3.2 為您的程序打造一個Config配置對象

  編寫Java或者C#程序的時候,我們一般會從XML讀取程序的配置信息。在Javascript里面,用XML做配置信息不大劃算,一方面要多請求一個XML文件或者把XML字符串轉換為XML對象,另一方面XML對象的方法比較復雜冗長。輕量級的JSON是最好的選擇。

  程序中的常量應該放到Config配置對象中,比如Ajax請求的Url、某個操作的提示等,例如:

  var Config = {

  ajaxUrl : “test.jsp”,

  successTips : “請求完成”

  };

  如果Config的數量較多,可以根據配置類型多嵌套一層,比如:

  var Config = {

  url : {

  src1 : “test1.jsp”,

  src2 : “test2.jsp”,

  .

  .

  },

  tips : {

  src1Suc : “請求1完成”,

  src2Suc: “請求2完成”,

  .

  .

  }

  };

  Config應放置于程序的最前面,方便查看和修改。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷噜噜噜亚洲男人的天堂| 中文字幕精品国产| 欧美在线激情网| 亚洲天堂第一页| 欧美福利小视频| 91av视频在线观看| 国产偷国产偷亚洲清高网站| www.欧美精品一二三区| 亚洲香蕉在线观看| 成人免费视频xnxx.com| 18久久久久久| 色视频www在线播放国产成人| 国产成人精品a视频一区www| 日本精品久久中文字幕佐佐木| 亚洲色在线视频| 亚洲欧美综合图区| 91干在线观看| 日韩视频第一页| 国内精品一区二区三区| 国产精品极品美女在线观看免费| 亚洲第一色在线| 亚洲免费av电影| 91在线观看免费网站| 国产精品99久久久久久白浆小说| 国产香蕉97碰碰久久人人| 欧洲亚洲免费在线| 欧美色videos| 正在播放欧美视频| 久久在线精品视频| 岛国av一区二区三区| 久久九九免费视频| 亚洲级视频在线观看免费1级| 欧美日韩免费在线| 国产色综合天天综合网| 亚洲va男人天堂| 欧美成人免费va影院高清| 5278欧美一区二区三区| 久久久女女女女999久久| 国产精品成熟老女人| 久久福利视频导航| 亚洲区bt下载| 9.1国产丝袜在线观看| 中文字幕在线成人| 日韩电影免费在线观看中文字幕| 国产精品无码专区在线观看| 亚洲国产精品人人爽夜夜爽| 26uuu另类亚洲欧美日本老年| 亚洲人成在线免费观看| 97精品视频在线观看| 日韩一区二区三区国产| 96精品久久久久中文字幕| 亚洲第一免费网站| 久久黄色av网站| 午夜欧美大片免费观看| 国产脚交av在线一区二区| 欧美一级淫片aaaaaaa视频| 亚洲成年人在线播放| 少妇精69xxtheporn| 欧美裸体男粗大视频在线观看| 97精品国产97久久久久久春色| 高清日韩电视剧大全免费播放在线观看| 裸体女人亚洲精品一区| 亚洲精品国产精品自产a区红杏吧| 韩剧1988免费观看全集| 国产精品r级在线| 777777777亚洲妇女| 中文字幕久久久| 成人乱人伦精品视频在线观看| 国产性色av一区二区| 欧美日韩在线免费| 亚洲成人黄色在线观看| 亚洲性无码av在线| 91精品国产91久久久久久吃药| 国产成人精品免高潮在线观看| 一本色道久久综合亚洲精品小说| 91亚洲国产精品| 日韩av资源在线播放| 欧洲日韩成人av| 国内精品久久久久| 国产精品久久久久久久久影视| 国产精品99久久久久久白浆小说| 国产成人拍精品视频午夜网站| 欧美xxxx综合视频| 一本色道久久88综合日韩精品| 欧美精品激情视频| 欧美激情第一页xxx| 91大神福利视频在线| 久久手机免费视频| 久久久久久久久久久91| 国产精品精品国产| 欧美午夜www高清视频| 国产精品流白浆视频| 久久精品99国产精品酒店日本| 国产福利精品视频| 欧美极品少妇全裸体| 亚洲国产欧美自拍| 国产成人av在线| 91精品国产综合久久香蕉的用户体验| 中国日韩欧美久久久久久久久| 国产亚洲精品一区二555| 色中色综合影院手机版在线观看| 在线观看91久久久久久| 色樱桃影院亚洲精品影院| 日韩欧美在线视频日韩欧美在线视频| 日韩免费在线免费观看| 亚洲欧美在线一区| 亚洲视频国产视频| 一本大道香蕉久在线播放29| 国产成人av网址| 欧美午夜性色大片在线观看| 欧美日韩福利在线观看| 91国偷自产一区二区三区的观看方式| 亚洲一区二区三区xxx视频| 国产欧美一区二区| 97超级碰在线看视频免费在线看| 美女视频黄免费的亚洲男人天堂| 91国产视频在线| 日韩中文字幕免费看| 97视频色精品| 国产精品高潮呻吟久久av无限| 日日骚久久av| 国产成人a亚洲精品| 国产精品一二三在线| 亚洲精品国产精品国自产观看浪潮| 国产成人鲁鲁免费视频a| 九九九久久久久久| 国产一区二区视频在线观看| 欧美成人免费全部| 日韩美女写真福利在线观看| 亚洲精品美女久久久久| 欧美精品videosex极品1| 欧美激情精品久久久久久久变态| 亚洲成人av中文字幕| 中文字幕亚洲欧美在线| www.亚洲一区| 久久久中精品2020中文| 国内精品久久久久影院 日本资源| 91免费精品视频| 成人精品视频99在线观看免费| 欧美综合国产精品久久丁香| 欧美一性一乱一交一视频| 日韩中文字幕在线播放| 萌白酱国产一区二区| 中文字幕av一区| 欧美高清激情视频| 国产欧美日韩中文字幕在线| 日韩一区二区三区xxxx| 久久中文久久字幕| 国产成人精品免高潮在线观看| 欧美日韩一区二区免费视频| 久久亚洲精品网站| 欧美精品xxx| 久久久久久有精品国产| 中文字幕亚洲激情| 国产精品视频区1| 日韩精品在线免费观看| 亚洲精品久久久一区二区三区| 国产丝袜一区二区三区| 2019精品视频| 亚洲人免费视频| 久久青草精品视频免费观看| 91免费看片网站| 国产精品va在线播放| 日韩电影在线观看中文字幕|