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

首頁 > 語言 > JavaScript > 正文

分享9點個人認為比較重要的javascript 編程技巧

2024-05-06 16:18:50
字體:
來源:轉載
供稿:網友
接觸和學習javascript也有3~4年了,真正牽扯到前后臺數據的交互,數據算法等高級編程知之甚少,甚至很少用,如果你問我你知道js什么知識呢?我可能只能說知道點jQuery的技巧,說編程都談不上,所以需要把某一些技巧作為編程習慣固定下來,免于以后有人問我你知道什么?
 

1.巧用判斷:

  在js中,NaN,undefined,Null,0,"" 在轉換為bool的時候,是false,所以,可以這樣寫。

 

復制代碼代碼如下:

if(!obj)  {}

 

表示一個對象如果為false的時候所做的事情,因為如果obj為以上任何一個,那么就是false,!false即是true,這樣,就不需要 if(obj==null || obj == NaN ....)。

2.巧用運算符:

   有一個很經典的技巧,得到時間戳。

 

復制代碼代碼如下:

var dataspan = new Date()*1;

 

我們知道,js是弱類型語言,Date()會返回一個表示時間的字符串,用這個字符串進行算術運算,將得到轉換,也就是結果的時間戳。

3.巧用正則表達式:

 

復制代碼代碼如下:

/.a/ig.exec('xsas')
//相當于創建一個reg對象,調用了exec方法,當然也能調用其他的方法,如:test(),match()等。

 

4.取數組最大值和最小值:

 

復制代碼代碼如下:

var values = [1,2,3,40,23]; 
var max = Math.Max.apply(Math,values);

 

調用Max.apply,設置對象的為Math,然后傳遞一個Values,就能確定最大值。

5.內存優化:

 

復制代碼代碼如下:

function p(){this.p='moersing'}; var p1 = new p();  
   p1.xx 
   p1.xx
   .......
   p1=null;  //執行完操作之后,最后手動解除對p1的引用。

 

6.最受歡迎的創建對象方式(原型模式):

 

復制代碼代碼如下:

function c(){
    this.name ='moersing';
    this.age=18;
    this.books=['javascript develop','C# develop'];
  }
  c.prototype={ 
       displayBookName:function (){ 
        foreach(var t in this.books) 
        {
           document.write(this.books[t]);
        }
    }
}

 

原型構造模式的最大缺點在于引用類型的共享,所以,將引用類型定義在構造函數中,而將通用方法定義在原型中,使用this引用。

7.塊級作用域和私有變量

    在javascript中,沒有塊級作用域和私有變量這一說,但是,利用一些特性,則能模仿這些效果。

7.1塊級作用域:

 

復制代碼代碼如下:

(function(){ 
      //塊級作用域
}
)();

 

    匿名函數外面加上一個括號,我管它叫"函數標準化",也就是說,可以像標準函數那樣調用,如:

 

復制代碼代碼如下:

 var name =function(){};
(name)();//一般不會這么寫;

 

這么做的好處就是,在()外部無法訪問到函數中變量,也就成了塊級作用域,這種方式一般用在編寫插件的時候,不會再全局 (global)中添加額外的變量,而且,在函數執行完畢之后,其內部定義的變量就被銷毀了,所以,也不會有閉包特性存在的問題。

7.2私有變量:

 

復制代碼代碼如下:

function private()
 { 
   var name = 'moersing';
   this.getName = function(){
   return this.name;
   }
}

 

私有變量實際上就是利用函數的作用域作為限制(外部無法訪問),然后定義一個方法,這個方法返回相應的變量,僅此而已。

8.DOM之NodeList:

   nodeList是一個動態的元素,這意味著,在文檔中添加任何元素,nodeList都會實時更新,如:

 

復制代碼代碼如下:

var alldiv = document.getElementsByTagName('div');
    for(var i=0;i<alldiv.length;i++)
    {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }

 

這段代碼會造成無限循環,在循環里面創建了一個div,然后appendChild方法將其添加到body中,那么,所有alldiv會立即就更新,所以,i<alldiv.length永遠無法成立,要解決這個問題,可以使用下面方式:

 

復制代碼代碼如下:

var alldiv = document.getElementsByTagName('div');
    var len,i;
    for(i=0,len=alldiv.length;i<len;i++)
    {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }

 

這里建議:最好不要頻繁的對NodeList操作,因為每次操作都會執行一次DOM樹的查詢。

  除了以上介紹的方法外,HTML5 新加入的API(selector API Level1)也能解決這個問題,它類似C#的linq及時查詢,至于什么是linq及時查詢,以后我會更新blog,敬請關注:

 

復制代碼代碼如下:

var allDiv= document.querySelectorAll('div');
    for(var i=0;i<alldiv.length;i++)
    {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }

 

   querySelectorAll需要一個參數,一個CSS選擇器,類似jquery中的$(),它返回的NodeList是一個及時的,非動態的DOM集合。

   另外還有一個querySelector,返回匹配的第一個元素,有關HTML5 API 詳 見

http://www.w3.org/standards/techs/dom#w3c_all

或者

 https://developer.mozilla.org/zh-CN/docs/Web/API

另外,本人也在醞釀一篇blog,專門講HTML5 API的,敬請關注。

9.DOM性能:

    不要做這種傻事(我做過。。。)

 

復制代碼代碼如下:

for(var i=0;i<10;i++)
    { 
       document.querySelector('ul').innerHTML="<li>"+i+"</li>";
    }

 

給對象的innerHTML賦值,會調用內置的C++解析器解析這個字符串,雖然速度很快,但是最好不要這樣操作,會有一定的性能流失。

最好這樣做:

 

復制代碼代碼如下:

var ih=null;

 

for(var i=0;i<10;i++)
 { 
    ih+="<li>"+i+"</li>";
 }
  document.querySelector('ul').innerHTML=ih;

 

另外的一些性能優化話題,等有時間再更新。

以上所述就是本文的全部內容了,希望大家能夠喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品一区二区三区电影黑人| 国产亚洲精品综合一区91| 国产精品999| 青草青草久热精品视频在线网站| 国产精品久久久久久久av电影| 久久久精品电影| 亚洲精品丝袜日韩| 亚洲欧美中文字幕| 成人伊人精品色xxxx视频| 亚洲国产欧美一区二区三区同亚洲| 国产视频观看一区| 亚洲精品99久久久久中文字幕| 日韩av免费看| 久久久天堂国产精品女人| 国产日韩精品综合网站| 国产视频在线观看一区二区| 亚洲色图国产精品| 97人人模人人爽人人喊中文字| 亚洲国产成人久久综合一区| 亚洲国产精品久久久久| 国产精品女主播视频| 国产精品精品国产| 亚洲视频日韩精品| 亚洲综合在线做性| 欧美电影电视剧在线观看| 国产在线视频欧美| 国产精品视频公开费视频| 色偷偷91综合久久噜噜| 亚洲精品资源在线| 日本一区二区在线免费播放| 欧美精品免费播放| 欧美伦理91i| 在线日韩日本国产亚洲| 亚洲天堂男人的天堂| 亚洲成人精品在线| 国产91色在线播放| 成人性教育视频在线观看| 8090理伦午夜在线电影| 亚洲free性xxxx护士白浆| 国模极品一区二区三区| 亚洲欧美日韩成人| 日本一区二区在线播放| 亚洲欧美综合另类中字| 欧美在线亚洲在线| 久久伊人精品一区二区三区| 国产欧美久久久久久| 久久久久久国产精品三级玉女聊斋| 国产一区二区三区直播精品电影| 国产成人在线亚洲欧美| 日韩有码在线观看| 欧美富婆性猛交| 欧美激情免费在线| 欧美视频专区一二在线观看| 久久久91精品| www.亚洲一二| 久久久精品欧美| 欧美日韩国产精品| 亚洲国产高清高潮精品美女| 国产精品美女在线| 日韩久久免费电影| 国产精品成人品| 成人免费看片视频| 久久视频在线直播| 国产精品第100页| 中文字幕国产亚洲2019| 国产亚洲精品一区二区| 97香蕉久久夜色精品国产| 亚洲欧美日韩精品久久亚洲区| 欧美激情成人在线视频| 精品视频在线观看日韩| 国产一区二区黄| 亚洲精品成人久久电影| 国产精品日韩在线一区| 亚洲精品一区二区三区婷婷月| 日韩亚洲欧美中文高清在线| 欧美成人午夜剧场免费观看| 国产精品久久久久999| 久久99国产综合精品女同| 久久av在线看| 日韩精品在线视频观看| 69影院欧美专区视频| 欧美日韩国产在线| 欧美电影免费观看高清完整| 精品国产一区久久久| 国产精品香蕉国产| 欧美日韩国产丝袜美女| 欧美第一页在线| 久久成年人视频| 秋霞午夜一区二区| 久久久久国产精品免费网站| 亚洲精品天天看| 欧美另类69精品久久久久9999| 日韩国产精品亚洲а∨天堂免| 久久久成人精品视频| 欧美福利视频网站| 久久五月天色综合| 5252色成人免费视频| 一个人看的www欧美| 日韩美女福利视频| 亚洲美女中文字幕| 欧美一区深夜视频| 日韩欧美成人区| 国产91精品久久久久久| 亚洲精品动漫久久久久| 一区二区欧美亚洲| 岛国av在线不卡| 国产成人小视频在线观看| 亚洲欧洲国产一区| 午夜美女久久久久爽久久| 国产精品毛片a∨一区二区三区|国| 亚洲人成欧美中文字幕| 久久视频在线视频| 精品日本高清在线播放| 77777少妇光屁股久久一区| 国产精品成人品| 国产精品日韩在线| 国产精品久久久久久久美男| 亚洲另类xxxx| 欧美巨乳美女视频| www.99久久热国产日韩欧美.com| 亚洲国产精品热久久| 欧美激情综合色综合啪啪五月| 日韩禁在线播放| 欧美成人网在线| 亚洲人永久免费| 日韩精品丝袜在线| 性视频1819p久久| 欧美国产极速在线| 国产亚洲欧美另类中文| 国产精品女人网站| 欧美性在线视频| 精品女厕一区二区三区| 日韩欧美一区二区三区| 91精品国产乱码久久久久久久久| 日本久久久久久久久久久| 高清欧美性猛交xxxx黑人猛交| 久久亚洲影音av资源网| 91九色单男在线观看| 欧美视频第一页| 欧美高清在线视频观看不卡| 午夜精品久久久久久久99黑人| 亚洲黄在线观看| 国产精品午夜国产小视频| 精品日韩视频在线观看| 久久久久亚洲精品| 国产午夜精品视频| 日韩电影中文字幕一区| 国产精品女人久久久久久| 亚洲第一页在线| 欧美国产日韩一区| 国产精品中文在线| 日韩欧美在线播放| 国产精品久久9| 亚洲免费一级电影| 91av在线免费观看视频| 国产suv精品一区二区| 欧美韩日一区二区| 8x海外华人永久免费日韩内陆视频| 亚洲成色777777女色窝| 亚洲人成伊人成综合网久久久| 成人乱人伦精品视频在线观看| 亚洲国语精品自产拍在线观看| 国产成人亚洲精品| 欧美成人中文字幕在线|