1. オブジェクトのプロパティ1.1 属性表記
サンプルコードは次のとおりです。 let name = '一碗の周' let job = 'フロントエンドエンジニア' // 属性表記は変数に直接書き込まれます。let obj1 = { 名前、 仕事、 言う私() { console.log(名前) } } // let obj2 = { と同等 名前: 名前、 仕事: 仕事、 sayMe: 関数() { console.log(名前) } } コンソールにログ出力します。 2. プロパティ名を計算する
// 方法 1 obj.foo = true; // 方法2 obj['a'+'bc'] = 123; . 演算子には大きな制限があります。たとえば、first name などの属性は角括弧を使用してのみ定義できます。括弧アプローチを使用すると、識別子を使用すると構文エラーになる変数または文字列リテラルを使用してプロパティを定義できます。 例えば: 人 = {} とします。 lastName = "姓"; person["first name"] = "Nicholas"; person[lastName] = "ザカス"; console.log(person["first name"]); // "ニコラス" console.log(person[lastName]); // "ザカス" これら 2 つのメソッドは、角括弧を使用してのみ定義できます。 ES5 では、文字列リテラルをオブジェクトリテラルのプロパティとして使用できます。次に例を示します。 人 = { 「名」:「ニコラス」 }; console.log(person["first name"]); // "ニコラス" ただし、属性名が変数内に存在する場合や計算する必要がある場合は、オブジェクトリテラルを使用して属性を定義することはできません。 ES5 より前では、プロパティ名が変数であるか、動的に計算される必要がある場合は、object.[変数名] を介してのみアクセスできます。 p = {とします 名前:「李思」 年齢: 20 } attName = 'name' とします。 console.log(p[attName]) //ここでattNameは変数名を表します。 // 李思 さらに、属性名を動的に計算するこの方法は、リテラルでは使用できません。 attName = 'name' とします。 p = {とします attName : '李四', // ここで attName は属性名であり、p の各レベルで属性名 attName を持つ属性を定義することと同じです。 年齢: 20 } console.log(p[attName]) // 未定義
attName = 'name' とします。 p = {とします [attName]: 'Li Si', // 変数 attName を参照します。これは、age: 20というnameという名前の属性を追加することと同じです。 } console.log(p[attName]) // 李斯 オブジェクトリテラル内の括弧は、プロパティ名が評価されることを示し、その内容は文字列として評価されます。 3.オブジェクトメソッド3.1Object.is() メソッド
厳密な等価演算子により、NaN はそれ自身と等しくなくなり、+0 は -0 と等しくなります。 ECMAScript 2015 では、この問題を解決するために「 構文構造は次のとおりです。 Object.is(値1, 値2); パラメータの説明:
ブール値を返します。 サンプルコードは次のとおりです。 console.log(+0 === -0); //true console.log(NaN === NaN); // 偽 console.log(Object.is(+0, -0)); // 偽 console.log(Object.is(NaN, NaN)); // 真 3.2Object.assign() メソッド
構文構造は次のとおりです。 Object.assign(ターゲット、...ソース) パラメータの説明:
ターゲット オブジェクトのプロパティに同じキーがある場合、そのプロパティはソース オブジェクトのプロパティによって上書きされることに注意してください。同様に、後続のソース オブジェクトのプロパティは、先行するソース オブジェクトのプロパティをオーバーライドします。 サンプルコードは次のとおりです。 ソース = { 名前:「周の一杯」 仕事: 「フロントエンドエンジニア」 } ターゲットを{}とします // 1 つ以上のソース オブジェクトからターゲット オブジェクトにすべての列挙可能なプロパティの値を割り当てるには、assign() メソッドを使用します。 オブジェクト.assign(ターゲット、ソース) console.log(ターゲット); // ディープコピーであるかどうかを確認する target.name = 'a bowl of porridge' console.log(target, source); //{ name: '一碗周', job: 'Front-end siege lion' } { name: '一碗粥', job: 'Front-end siege lion' } 4.スーパーキーワードthis キーワードは常に関数が配置されている現在のオブジェクトを参照することがわかっています。ECMAScript // プロトタイプオブジェクトとして使用するオブジェクトを定義します。const proto = { v: 「こんにちは」 } // オブジェクトを定義する const obj = { v: '世界'、 プリントV1() { コンソールにログ出力します。 }, // superキーワードを使用する printV2() { コンソールにログ出力します。 } } //objオブジェクトのプロトタイプをprtotに変更します オブジェクト.setPrototypeOf(obj, proto) // このobj.printV1()の使用法 // 世界 // super obj.printV2() の使い方 // こんにちは
5. オブジェクト拡張演算子オブジェクト スプレッド演算子 ( サンプルコードは次のとおりです。 // オブジェクト拡張演算子 (...) は、パラメーター オブジェクトのすべてのトラバース可能なプロパティを抽出し、現在のオブジェクトにコピーするために使用されます。 obj = { 名前:「周の一杯」 仕事: 「フロントエンドエンジニア」 } 新しいオブジェクトを = { ...オブジェクト } console.log(newObj); // { name: 'Yiwan Zhou', job: 'フロントエンドエンジニア' } // ディープコピーであるかどうかを確認する newObj.name = 'A bowl of porridge' console.log(obj, newObj); // { name: '一碗周', job: 'Front-end siege lion' } { name: '一碗粥', job: 'Front-end siege lion' } 配列は特殊なオブジェクトなので、オブジェクトスプレッド演算子は配列にも使用できます。 arr = [1, 2, 3, 4, 5]とします。 obj = { …あぁ } console.log(obj); // { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 } スプレッド演算子の後にオブジェクトが続かない場合は、自動的にオブジェクトに変換されます。 コンソール.log( { ...1 // {...Object(1)} と同等 } ); // {} コンソール.log( { ...true // {...Object(true)} と同等 } ); // {} コンソール.log( { ...undefined // {...Object(undefined)} と同等 } ); // {} コンソール.log( { ...null // {...Object(null)} と同等 } ); // {} ECMAscript の新機能オブジェクトの紹介に関するこの記事はこれで終わりです。より関連性の高い ECMAscript オブジェクトの紹介コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様、今後とも 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
<<: Dockerコンテナとホストマシン間の8時間の差の問題を解決する
>>: ラベルとボタンを削除し、背景画像の点線/影を追加すると完璧な解決策になります
1. 基本的なテキスト要素を使用してコンテンツをマークアップするまず表示効果を見てみましょう:対応す...
目次序文:システム要件:インストール環境:古いバージョンをアンインストールします: yum は具体的...
序文日曜日に自宅で web.dev の 2020 3 日間ライブを視聴したところ、興味深い点がたくさ...
目次概要同一生成元ポリシー (SOP)相同制限クロスドメインをバイパスクロスサイトリクエストフォージ...
CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...
目次1. プロトタイプとは何ですか? 1.1 関数プロトタイプオブジェクト1.2 コンストラクタを使...
目次1. LAN内のプロキシ2. イントラネットの浸透イントラネット侵入とは何ですか?橋プロキシサー...
コード知識ポイント1. fullpage.jsを組み合わせてフルスクリーンスクロールを実現する2. ...
目次0. 背景1. インストール2. Baidu Cloudアカウントにログインする3. ファイルを...
場合によっては、フィールドから別の新しいフィールドにデータの列全体をコピーする必要があります。これは...
平行ボックスの余白 (二重余白の重なり) に関する面接の質問: 1 つのボックスに上余白があり、もう...
一般的に、テーブルを使用する場合は、常に <table border="1"...
1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...
サーバー上にタスク プロセスがあります。 ps -ef | grep task を使用して表示すると...
パスワード入力後にMySQLデータベースがクラッシュする問題と解決策1 ケースの説明最近、基本的な機...