JavaScript開発者はよく7つの基礎知識をおろそかにしたり、誤ったりします.

3888 ワード

7 JavaScript Baics ManDevelopers Areen't Using(Properly)JavaScript自体は簡単な言語と言えますが、私達も絶えず知恵と柔軟なモードでそれを改善しています.昨日はこれらのモードをJavaScriptのフレームワークに適用しました.今日はこれらのフレームワークがまた私たちのWebアプリケーションを駆動しました.多くの新米開発者は様々な強力なJavaScriptの枠組みに引きつけられましたが、彼らは枠組みの後ろに星のようなJavaScriptの実用的な技術を見落としました.この文章ではその中の7つの基礎知識を提供します.1.String.prototype.replace方法では/gと/iのフラグビットを使用していますが、多くのJavaScript初心者は意外にも、文字列のreplace方法はすべてのマッチするサブストリングを置換しません.もちろんJavaScriptのベテランたちはここで正規表現が使えることを知っています.そしてグローバルマークのビットを追加する必要があります.str.replace(「David」「Darren」)//「Darren is an Arsenal fan,which means David is great」//Desired/予想通りのstr.replace(/David/g,"Darren")//////「Darren is an Asenalファン、which means Darren is great」
もう一つの基本的な論理エラーは、大きさの書き込みが敏感でない場合(大文字でも大丈夫です.小文字でも大丈夫です.)、大きさの書き込みを無視していません.この時/iのフラグビットはとても実用的です.「Darren will always be an Asenalファン、which means Darren will always be great」
(注:上の例では意味が分かりませんでした.注釈が間違っているかもしれません.)JavaScriptの開発者はこの二つのマークの穴を踏んだことがあります.ですから、適当な時にそれらを使うことを忘れないでください.2.クラスの配列オブジェクトとAray.prototype.slice方法群のslice方法は、通常、1つの配列から断片を抽出するために用いられる.しかし、多くの開発者が知らないのは、この方法はまた、「クラス配列」要素(例えば、argmentsパラメータリスト、ノードリスト、および属性リスト)を本物の配列に変換するために使用されてもよいことである.(document.querySelectorAll)/「true」array of DIVs//div要素からなる「本物の」配列var argsArr=Aray.prototype.slite.call(argments)///changes argments art/true配列はまた、簡単なslice調を使って、一つの配列をクローンできます.var clone=myAray.slice(0)//naive clone/浅いクローン
(注:ここのパラメータ0も省略できます.undefinedはslice方法で自動的に0に変換されたと思います.)ARray.prototype.sliceはJavaScriptの世界の中の秘宝です.しかし、JavaScript初心者たちは明らかにその潜在力の全てを意識していません.
3.array.prototype.sortメソッド配列のsort方法は、まだ十分に利用されておらず、開発者が想像していたより強いかもしれません.多くの開発者は、sort方法がこのようなことに使えると思っているかもしれません.
これは間違いないですが、「Robin Van Purse Strings」、「age:30」、「name:「The o Walcott」、「name:Bacary Sagna」、「age:28」など、より強力な使い方があります.sort(function(obj 1、objjagage 2)は、Age:24)、{name:「BacarySagname:"BacarySagname Sagname",jjjjjjagagagagage",jjjjjjjjjjjagagagageeeefiage""".jjjjjjjjjjjjjjjjjjjjjagageeeeeeeee;);/Returns:////name:“The o Walcott”,age:24},//name:“Bacary Sagna”,age:28},//name:“Robin Van Purse Strigs”,age:30/”
単純なタイプの配列項目を並べ替えるだけでなく、属性によって対象を並べ替えることができます.いつかサーバーからJSONデータが送られてきます.対象は並べ替えが必要です.これを忘れないでください.開発者たちは常に1つの配列をクリアしようとしますが、実際には間違って新しい配列を作成しました.var myAray=yourAray=[1,2,3]///:(/囧mAray=[])///yourArray is still[1,2,3]/yourArrayはまだ[1,2,3]です.//The right way、keeping reference/正しい方法は、myAray.length=0を維持することである./yourArray and myArray both[]//yourArraymyArray(および他のすべてのこの配列に対する参照)は[]となる.
坑内の人たちはやっと分かりました.元はただ引用を伝えています.だから私はmyArayを新たに賦与します.確かに新しい空の配列が作られますが、他の古い配列への参照は変わりません.大坑です.やはりカットオフの方法を使いましょう.少年.5.Pushを使って上の第2節に配列を結合します.配列のsliceとappy方法で組み合わせることができるいくつかの妙技を見せました.だから、配列方法の他のテクニックについては、もうご存知です.心の準備ができましたね.今回はPushを使って配列を合併します.var merget From=[4,5,6];var mergFrom=[7,8,9];アラy.prototype.push.appy(mergto To,mergFrom);mergtor;/is:4,5,6,7,8,9
これは知られていないテクニックです.簡単な原生方法で配列合併が実現できるという一般的なミッションです.6.高効率な探知機能の特性と対象の属性が多い時、開発者たちは次のようにブラウザのある特性を探測します.if(/do some stuff//ここで仕事をします.)
もちろん正常に動作することができますが、必ずしも効率が良いとは限りません.このオブジェクトの探知方法はブラウザでリソースを初期化します.過去には、上のコードの断片はいくつかのブラウザの下でメモリが漏れてしまう可能性があります.より良い、より速い方法は、オブジェクトにキー名が含まれているかどうかを確認することです.if(「geolocation」in navigator){/Do some stuff/ここで仕事をします}
キー名のチェックは簡単で、メモリの流出を避けることができます.また、この属性の値が偽の値であれば、前の検出方式は「いいえ」の結果を得ることができます.このキーの名前が存在するかどうかは本当に検出できません.クリックすると、ある機能が起動します.リンクをクリックする時にブラウザがこのリンクに沿ってジャンプしたくないので、JavaScriptクラスのEvent.stop方法を習慣的に使います.
(注:どのクラスにこの方法があるか分かりません.おそらく、その役割はreturn falseに相当するでしょう.文法はjQueryに似ていますが、jQueryにはこの方法がありません.そしてjQueryはe.prevent Defaultとe.stopPropopopopopopopopopopopopop Progration方法をサポートしています.)この怠け者の方法には問題があります.ブラウザのデフォルト動作を阻止するだけでなく、イベントの継続を阻止しています.要素に結合された他のイベントモニターがトリガされないことを意味します.イベントが発生することを全く知らないからです.この時はpreventDefaultを使えばいいです.JavaScriptさんたちはこの記事を見て、この記事を言うかもしれません.「知っていました」というが、いつか、彼らは何らかの点でつまずくかもしれません.JavaScriptの中の細かいところに注意してください.とんでもないことをしても、とんでもないことになりますよ.