9時を共有します.個人的に重要だと思うjavascriptプログラミング技術

4741 ワード

1.巧用判断:
  jsではNaN、undefined、Null、0、“”はbookに変換する時、falseです.だから、このように書くことができます.
 
  
if(!obj)  {}
一つの対象がfalseの時にすることを表します.objが上記のいずれかであればfalseです.falseはtrueであり、このようにしてif(obj==null|oj=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)();// ;
このようにする利点は、外部では関数に変数がアクセスできなくなり、ブロックレベルのスコープとなります.このようにプラグインを作成する際に、グローバルに追加の変数を追加しないようにします.また、関数が実行された後に内部定義された変数が破壊されますので、クローズド特性の問題もありません.
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     {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }
このコードは無限ループを引き起こし、サイクルの中でdivを作成し、その後、apendChildメソッドがbodyに追加されると、すべてのalldivはすぐに更新されるので、i
 
  
var alldiv = document.getElementsByTagName('div');
    var len,i;
    for(i=0,len=alldiv.length;i     {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }
ここで提案します.頻繁にNodeListを操作しないほうがいいです.操作のたびにDOMツリーのクエリが行われます.
  以上紹介した方法以外にも、HTML 5が新しく加入したAPI(selector API Level 1)もこの問題を解決できます.C龛のlinqに似ています.適時に調べたら、これからブログを更新します.ご注意ください.
 
  
var allDiv= document.querySelectorAll('div');
    for(var i=0;i     {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }
   QerySelectorAllはパラメータを必要とし、CSSセレクタは、jqueryの中のドル()のように、NodeListは、リアルタイムで非ダイナミックなDOM集合を返す.
   もう一つのquerySelectorがあります.マッチングの最初の要素を返します.HTML 5 APIについて詳しく教えてください.
http://www.w3.org/standards/techs/dom#w3c_all.
または
 https://developer.mozilla.org/zh-CN/docs/Web/API
また、私もブログを準備しています.HTML 5 APIを専門に話していますので、ご注意ください.
9.DOM性能:
    そんなばかなことをしないでください.
 
  
for(var i=0;i<10;i++)
    {
       document.querySelector('ul').innerHTML="
  • "+i+"
  • ";
        }
    オブジェクトへのinnerHTMLの割り当ては、内蔵のC++解析という文字列を呼び出します.速度は速いですが、このように操作しない方がいいです.一定の性能が失われます.
    このようにしたほうがいいです
     
      
    var ih=null;

    for(var i=0;i<10;i++)
     {
        ih+="

  • "+i+"
  • ";
     }
      document.querySelector('ul').innerHTML=ih;
    その他のいくつかの性能は話題を最適化して、時間があったらまた更新します.
    以上述べましたが、本文の内容は全部です.お好きになってください.