ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の面白くて奇妙な array_javascript スキル

JavaScript の面白くて奇妙な array_javascript スキル

WBOY
リリース: 2016-05-16 18:54:42
オリジナル
846 人が閲覧しました

何年も前、淘宝網王埔の会員カードのスクリプトを書き直しているときに、偶然興味深いものを発見しました。コードは同様です:

コードをコピー コードは次のとおりです:

var associative_array = new Array();
associative_array["one"] = "1";
associative_array["two"] = "2";
associative_array["three"] = "3";
if (associative_array.length > ; 0)
{ // to do}

associative_array.length は常に 0 に等しいことがわかりますが、当時は少し混乱しました。これは、IE が CSS 属性の display:inline -block をサポートしていると誰もが考えているのと同じであり、まったくの偶然と誤解であることに気づきました。

実際 (《JavaScript の「連想配列」は有害であると考えられている" より引用):

JavaScript 配列 (数値であることを意図したもの) は、キーと値のペアを保持するためによく使用されます。これは、代わりにオブジェクトを使用する必要があります。

//一般的な考え方: 配列は数値のみをサポートし、オブジェクトではキーと値の対応が使用されます。

配列コンストラクターで文字列キーを指定する方法はありません。 //配列コンストラクターで文字列キー値を定義することはできません
配列で文字列キーを指定する方法はありません。 literal . // 文字列キーは配列リテラルでは定義できません
Array.length は文字列キーをカウントしません
さらに配列を調べます:

1. 割り当てられた値に従って配列のサイズを自動的に変更できます
コードをコピーします コードは次のとおりです:

var ar = [];
ar[2] = 1;
alert(ar.length)

この配列の長さは 3 であることがわかります、初期化された Same as 配列と同じです。割り当てのないすべての配列オブジェクトは未定義として定義されます。

詳細な読書:

2. 「The Miller Device」 メソッドを使用して、それが配列であるかどうかを判断できます

コード コードは次のとおりです:

function isArray(o) { return Object.prototype.toString.call(o) === '[オブジェクト配列]';}

" 「The Miller Device」の素晴らしい使い方は、配列を決定することだけではありません:
コードをコピー コードは次のとおりです:

var is = {
types : ["Array","RegExp","Date","Number","String","Object"]
};

for(var i= 0,c;c=is.types[i ];){
is[c] = (function(type){
return 関数(obj){
return Object.prototype.toString.call( obj) == "[オブジェクト " type "]"
}
})(c); 🎜>

詳細な読書:

    《ミラー装置》
  • 《isArray: 正しく理解するのが非常に難しいのはなぜですか?》
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート