9時を共有します.個人的に重要だと思うjavascriptプログラミング技術
4741 ワード
1.巧用判断:
jsではNaN、undefined、Null、0、“”はbookに変換する時、falseです.だから、このように書くことができます.
2.巧用演算子:
古典的なテクニックがあります.タイムスタンプをもらいます.
3.巧は正規表現を使う:
5.メモリ最適化:
7.ブロックレベルのスコープとプライベート変数
javascriptでは、ブロックレベルのスコープとプライベート変数という説はありませんが、いくつかの特性を利用すれば、これらの効果を模倣することができます.
7.1ブロックレベルのスコープ:
7.2プライベート変数:
8.DOMのNodeList:
nodeListはダイナミックな要素で、ドキュメントに任意の要素を追加すると、nodeListはリアルタイムで更新されます.
以上紹介した方法以外にも、HTML 5が新しく加入したAPI(selector API Level 1)もこの問題を解決できます.C龛のlinqに似ています.適時に調べたら、これからブログを更新します.ご注意ください.
もう一つの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性能:
そんなばかなことをしないでください.
このようにしたほうがいいです
以上述べましたが、本文の内容は全部です.お好きになってください.
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;
その他のいくつかの性能は話題を最適化して、時間があったらまた更新します.以上述べましたが、本文の内容は全部です.お好きになってください.