JavaScriptのすべての変数はオブジェクトであり、2つの例外が無効で未定義です。
コードコピーは次のとおりです。
false.toString();
[1、2、3] .toString();
functionfoo(){}
foo.bar = 1;
foo.bar; //
一般的な誤解は、数字の文字通りの値はオブジェクトではないということです。これは、フローティングポイント数値額面の一部としてポイント演算子を解析しようとするJavaScriptパーサーのバグのためです。
コードコピーは次のとおりです。
2.ToString(); //エラー:syntaxerror
数字のリテラル値をオブジェクトのように見せるための多くの回避策があります。
コードコピーは次のとおりです。
2..toString(); // 2番目のドットは通常解析できます
2.ToString();
(2).toString();
データ型としてのオブジェクト
JavaScriptオブジェクトはハッシュテーブルとして使用でき、主に名前付きキーと値の間の対応を保存するために使用されます。
オブジェクトのリテラル構文を使用 - {} - は、単純なオブジェクトを作成できます。この新しく作成されたオブジェクトは、カスタムプロパティなしで、以下のObject.Prototypeから継承します。
コードコピーは次のとおりです。
var foo = {}; //空のオブジェクト
// 12の値のカスタムプロパティ「テスト」を持つ新しいオブジェクト
var bar = {test:12};
アクセスプロパティ
オブジェクトのプロパティにアクセスするには、DOTオペレーターまたはブラケット演算子にアクセスするには、2つの方法があります。
コードコピーは次のとおりです。
var foo = {name: 'Kitten'}
foo.name; // kitten
foo ['name'];
var get = 'name';
foo [get];
foo.1234; // syntaxerror
foo ['1234'];
2つの構文は同等ですが、ブラケット演算子は次の2つの状況(動的に設定されたプロパティ)でまだ有効です - 属性名は有効な変数名ではありません(たとえば、属性名に属性名が含まれるか、属性名が含まれます。 JSのキーワード)
翻訳者のメモ:JSLINT構文検出ツールでは、ポイント演算子をお勧めします。
属性を削除します
プロパティを削除する唯一の方法は、プロパティを未定義またはnullに設定することで、プロパティを削除するのではなく、単にプロパティと値の間の関連性を削除することです。
コードコピーは次のとおりです。
14
var obj = {
バー:1、
foo:2、
BAZ:3
};
obj.bar =未定義;
obj.foo = null;
obj.bazを削除します。
for(bar i in obj){
if(obj.hasownproperty(i)){
console.log(i、 '' + obj [i]);
}
}
上記の出力の結果には、バーが定義されていないことがあり、foo nullがあります - 実際にはbazのみが削除されているため、出力の結果から消えます。
属性名の構文
コードコピーは次のとおりです。
var test = {
「ケース」:「私はキーワードなので、文字列として記録する必要があります」、
削除:「私もキーワードだので私が私です」//エラー:syntaxerror
};
オブジェクトの属性名は、文字列または通常の文字を使用して宣言できます。ただし、JavaScriptパーサーの別の誤解により、上記の2番目の宣言方法により、ECMAScript 5の前にSyntaxerrorエラーが発生します。
このエラーの理由は、deleteがJavaScript言語のキーワードであるため、JavaScriptエンジンの下位バージョンでは、文字列リテラルを文字列リテラル値を使用して宣言する必要があります。