ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript アドバンスト シリーズ - オブジェクトの使用法とプロパティ

JavaScript アドバンスト シリーズ - オブジェクトの使用法とプロパティ

黄舟
黄舟オリジナル
2017-02-07 17:22:421151ブラウズ
  • データ型としてのオブジェクト

  • プロパティにアクセス

  • プロパティを削除

  • プロパティ名の構文

JavaScriptのすべての変数を使用可能オブジェクトとして。 2 つの例外は null と unknown です。

false.toString(); // 'false'
[1, 2, 3].toString(); // '1,2,3'

function Foo(){}
Foo.bar = 1;
Foo.bar; // 1

よくある誤解は、数値リテラルはオブジェクトとして使用できないということです。これは、ドット演算子を浮動小数点リテラル値の一部として解析しようとする JavaScript パーサーのバグが原因です。

2.toString(); // 出错:SyntaxError

数値リテラルをオブジェクトのように見せるための回避策はたくさんあります。

2..toString(); // 第二个点号可以正常解析
2 .toString(); // 注意点号前面的空格
(2).toString(); // 2先被计

データ型としてのオブジェクト

JavaScript オブジェクトはハッシュ テーブルとして使用でき、主に名前付きキーと値の対応を保存するために使用されます。

オブジェクト リテラル構文 {} を使用すると、単純なオブジェクトを作成できます。この新しく作成されたオブジェクトは Object.prototype を継承しており、カスタム プロパティはありません。

var foo = {}; // 一个空对象

// 一个新对象,拥有一个值为12的自定义属性'test'
var bar = {test: 12};

プロパティにアクセスする

オブジェクトのプロパティにアクセスするには、ドット演算子または角かっこ演算子の 2 つの方法があります。

var foo = {name: 'kitten'}
foo.name; // kitten
foo['name']; // kitten

var get = 'name';
foo[get]; // kitten

foo.1234; // SyntaxError
foo['1234']; // works

2 つの構文は同等ですが、角括弧演算子は次の 2 つの状況でも有効です

属性の動的設定
  • 属性名は有効な変数名ではありません (翻訳者注: たとえば、属性 名前にスペースが含まれているか、属性名が JS キーワードです)
  • 属性を削除する
属性を削除する唯一の方法は、属性を未定義または null に設定することによって、実際に属性が削除されるわけではありません。 、ただし、属性と値の関連付けを除く。

var obj = {
    bar: 1,
    foo: 2,
    baz: 3
};
obj.bar = undefined;
obj.foo = null;
delete obj.baz;

for(var i in obj) {
    if (obj.hasOwnProperty(i)) {
        console.log(i, '' + obj[i]);
    }
}

上記の出力には、bar unknown と foo null があります。実際に削除されるのは baz だけなので、出力から消えます。

属性名の構文

var test = {
    'case': 'I am a keyword so I must be notated as a string',
    delete: 'I am a keyword too so me' // 出错:SyntaxError
};

オブジェクトの属性名は、文字列または通常の文字を使用して宣言できます。ただし、JavaScript パーサーの別の設計が間違っているため、上記の 2 番目の宣言メソッドは ECMAScript 5 より前に SyntaxError をスローします。

このエラーの理由は、delete が JavaScript 言語のキーワードであるため、以前のバージョンの JavaScript エンジンで正常に実行するには、文字列リテラル宣言を使用する必要があります。

上記は JavaScript の上級シリーズ - オブジェクトの使用法と属性です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。