JavaScript初心者の注意すべき7つの詳細
16259 ワード
原文はここです
1.コードの簡略化
Duglas Crockfordは、JSONデータフォーマットを発明してデータを保存しています.オリジナルのjavascript方法を使用して、複雑なデータを保存してもいいです.
本質的には、JSONは、複雑なデータを記述するための最も軽量な方法であり、直接ブラウザで実行される.PHPでもJson_を呼び出すことができます.decode()関数はそれを使います.
(3)できるだけJavaScript原生関数を使用する
イベントはJavaScriptの非常に重要な一部です.リストのリンクをクリックしたいですが、一般的にはループを書いて、リンク先にイベントを結びつけます.HTMLコードは以下の通りです.
JavaScriptに関する最も頭が痛いことの一つは、変数が特定の作用範囲を持っていないことです.一般的には、任意の変数、関数、配列またはオブジェクトが大域的であり、これは、同じページ上の他のスクリプトがアクセスし、それらをカバーすることができることを意味する.解决方法は、匿名関数に変数をカプセル化することです.例えば、以下の定義では、3つのグローバル変数と2つのグローバル関数が生成されます.
あなたが書いたコードを他の人が使いやすいようにしたり、修正したりするためには、設定が必要です.ソリューションはあなたが書いたスクリプトに設定対象を追加します.要点は以下の通りです
1、あなたのシナリオにconfigrationというオブジェクトが追加されます.
2、配置オブジェクトには、すべての他の人が変えたいもの、例えばCSSのID、クラス名、言語などが格納されています.
3、このオブジェクトを返します.パブリック属性として他の人が書き換えることができます.
(7)コード互換性
互換性は初心者が見逃しやすい部分です.Javascriptを勉強する時はいつもある固定ブラウザでテストします.このブラウザはIEである可能性があります.これは致命的なものです.最終的にユーザーが見た結果、あなたが書いたコードはブラウザで正しく実行できないかもしれません.あなたのコードを主流のブラウザで全部テストするべきです.時間がかかるかもしれませんが、そうするべきです.
1.コードの簡略化
//
var car = new Object();
var.color='red';
car.wheels=4;
car.hubcaps='spinning';
car.age=4;
//
var car={
color:'red',
wheels:4,
hubcaps:'spinning',
age:4
}
これは最も基本的なものです.もちろんプロトタイプとコンストラクションモードを結合した定義方法があります.//
var a=new Array(
'aa','bb','cc'
);
// :
var a=[
'aa','bb','cc'
];
//
var car= new Array();
car['color']='red';
car['wheels']=4;
car['hubcaps']='spinning';
car['age']=4;
var direction;
if(x <200){
direction=1;
}else{
direction=-1;
}
// :
var direction = x <200 ?1 : -1;
(2)データフォーマットとしてJSONを使用するDuglas Crockfordは、JSONデータフォーマットを発明してデータを保存しています.オリジナルのjavascript方法を使用して、複雑なデータを保存してもいいです.
var band = { "name":"The Red Hot Chili Peppers", "members":[ { "name":"Anthony Kiedis", "role":"lead vocals" }, { "name":"Michael 'Flea' Balzary", "role":"bass guitar, trumpet, backing vocals" }, { "name":"Chad Smith", "role":"drums,percussion" }, { "name":"John Frusciante", "role":"Lead Guitar" } ], "year":"2009" }
私たちはJavaScriptでJSONを直接使用してもいいし、APIとして戻ってくるフォーマットもあります.多くのAPIで応用されています.<div id="delicious"></div>
<script> function delicious(o){ var out='<ul>'; for(var i=0;i<o.length;i++){ out+='<li><a href="'+o[i].u + '">' + o[i].d + '</a></li>'; } out +='</ul>'; document.getElementById('delicious').innerHTML = out; } </script>
<script> src="http://feeds.delicious.com/v2/json/codepo8/javascript?count=15&callback=delicious"></script>
ここでは、deliciousのWebサービスを呼び出して最新のブックマークを取得し、JSON形式で戻り、それらを無秩序リストとして表示する.本質的には、JSONは、複雑なデータを記述するための最も軽量な方法であり、直接ブラウザで実行される.PHPでもJson_を呼び出すことができます.decode()関数はそれを使います.
(3)できるだけJavaScript原生関数を使用する
// :
//
var numbers=[3,342,23,22,124];
var max=0;
for(var i=0;i<numbers.length;i++){
if(numbers[i] > max){
max = numbers[i];
}
}
alert(max);
//
var numbers = [3,342,23,22,124];
number.sort(function(a,b){
return b-a;
});
alert(numbers[0]);
// :
Math.max(12,123,3,2,433,4);//return 433
// class , :
function addClass(elm,newClass){
var c=elm.className;
elm.className = (c==='')? newClass : c+' ' +newClass;
}
// :
function addClass(elm,newClass){
car classes = elm.className.split(' ');
classes.push(newClass);
elm.className = classes.join(' ');
}
(4)事件依頼(読めませんでした)イベントはJavaScriptの非常に重要な一部です.リストのリンクをクリックしたいですが、一般的にはループを書いて、リンク先にイベントを結びつけます.HTMLコードは以下の通りです.
<h2>Great Web resources</h2>
<ul id="resources">
<li><a href="http://opera.com/wsc">Opera Web Standards Curriculum</a></li>
<li><a href="http://sitepoint.com">Sitepoint</a></li>
<li><a href="http://alistapart.com">A List Apart</a></li>
<li><a href="http://yuiblog.com">YUI Blog</a></li>
<li><a href="http://blameitonthevoices.com">Blame it on the voices</a></li>
<li><a href="http://oddlyspecific.com">Oddly specific</a></li>
</ul>
スクリプトは以下の通りです(function(){ var resources = document.getElementById("resources"); var links = resources.getElementsByTagName("a"); var all = links.length; for(var i=0; i < all ; i++){ links[i].addEventListener('click',handle,false); }; function handler(e){ var x=e.target; alert(x); e.preventDefault(); }; })();
より合理的な書き方は、リストの親オブジェクトのみにイベントをバインドします.(function(){ var resources = document.getElementById("resources"); resoucres.addEventLister('click',handler,false); function handler(e){ var x = e.target; if(x.nodeName.toLowerCase() === 'a'){ alert('Event delegation:' + x); e.preventDefault(); } } })
();
(5)匿名関数JavaScriptに関する最も頭が痛いことの一つは、変数が特定の作用範囲を持っていないことです.一般的には、任意の変数、関数、配列またはオブジェクトが大域的であり、これは、同じページ上の他のスクリプトがアクセスし、それらをカバーすることができることを意味する.解决方法は、匿名関数に変数をカプセル化することです.例えば、以下の定義では、3つのグローバル変数と2つのグローバル関数が生成されます.
var name = 'Chris';
var age = '34';
var status = 'single';
function createMember(){
// [...]
}
function getMemberDetails(){
// [...]
}
パッケージ後は以下の通りですvar myApplication = function(){
var name = 'Chris';
var age = 34;
var status = 'single';
return{
createMember:function(){
//[...]
},
getMemberDetails:function(){
//[...]
}
}
}();
//myApplication.createMember()
// and
//myApplication.getMemberDetails()
//now work
これは単体モードと呼ばれ、JavaScriptの設計モードの一つであり、YUIの中では非常に多く使われている.改善された書き方は:var myApplication = function(){
var name = 'Chris';
var age = 34;
var status = 'single';
function createMember(){
//[...]
}
function getMemberDetails(){
//[...]
}
return{
create:createMember,
get:getMemberDetails
}
}();
//myApplication.get() and myApplication.create() now work
(6)コードの設定可能あなたが書いたコードを他の人が使いやすいようにしたり、修正したりするためには、設定が必要です.ソリューションはあなたが書いたスクリプトに設定対象を追加します.要点は以下の通りです
1、あなたのシナリオにconfigrationというオブジェクトが追加されます.
2、配置オブジェクトには、すべての他の人が変えたいもの、例えばCSSのID、クラス名、言語などが格納されています.
3、このオブジェクトを返します.パブリック属性として他の人が書き換えることができます.
(7)コード互換性
互換性は初心者が見逃しやすい部分です.Javascriptを勉強する時はいつもある固定ブラウザでテストします.このブラウザはIEである可能性があります.これは致命的なものです.最終的にユーザーが見た結果、あなたが書いたコードはブラウザで正しく実行できないかもしれません.あなたのコードを主流のブラウザで全部テストするべきです.時間がかかるかもしれませんが、そうするべきです.