ホームページ > 記事 > ウェブフロントエンド > JavaScript 上級プログラミング(第 3 版)学習ノート 13 ECMAScript5 新機能_基礎知識
次のステップは BOM と HTML5 になるはずですが、ECMAScript5 には ECMAScript3 と比較して多くの新しい変更点があり、これらの変更点も非常に興味深いため、この記事では私が考える興味深い変更点 (すべての変更点ではありません) をまとめます。詳細には触れずにリストを示します。
1. 構文の変更
1. キーワードと予約語
ES3 では、キーワードを識別子として使用すると「Identifier Expected」エラーが発生します。一方、識別子に予約語を使用すると、特定のエンジンに応じて同じエラーが発生する場合とそうでない場合があります。 ES5 では、キーワードや予約語を識別子として使用することはできませんが、オブジェクトのプロパティ名として使用することができます。 ES5のキーワード・予約語のうち、letとyieldが新たに追加されました。最大限の互換性を確保するには、ES3 または ES5 のキーワードと予約語を識別子として使用しないでください。
2. 属性の特性
ES5 では、ユーザー定義の属性の説明を使用して、特定の属性の列挙可能、構成可能、書き込み可能、取得、設定などの属性をオーバーライドできます。具体的な方法は、Object オブジェクトに定義された静的関数を使用することです。
3. Strict モード
最大の文法上の変更は、"use strict" ステートメントを使用してスクリプト全体を追加することです。厳密モードを有効にするコードを関数内に追加すると、その関数に対してのみ厳密モードが有効になります。厳密モードの主な変更点は次のとおりです。
(1) 変数は使用する前に定義する必要があります。つまり、暗黙的なグローバル変数は許可されません
(2) 8 進データは使用されません
(3) with 文は使用しないでください
(4) eval
A. eval を識別子として使用できないため、変数や関数に名前を付けることはできません eval
B. eval()関数で定義した変数は外部からアクセスできません
(5) 引数
A. 引数を識別子として使用することはできません
B.関数としての内部オブジェクトは引数を変更できないため、仮パラメータと引数
の間で同期的な変更は行われなくなりました。 C. argument.callee にアクセスできません
D. argument.caller 属性は次のように定義されます。 ES5 であり、その値は常に未定義であり、主に argument.caller と関数呼び出し元を区別するために使用されますが、厳密モードではアクセスできません
(6) 関数
A.関数
内に同じ名前を使用することはできません。 B. 関数
の caller 属性に値を割り当てることはできません。 C. 環境オブジェクトを指定せずに関数を呼び出す場合、この値は代入されません。ウィンドウを指しますが、未定義の
を指します (7) オブジェクト
A. 同じ名前の 2 つのプロパティをオブジェクト
に含めることはできません B. 属性を変更する場合プロパティ [[writable]] が false の場合、サイレントに失敗する代わりに例外がスローされます。同様に、属性 [[configurable]] が false の属性を削除するために delete を使用する場合も、例外がスローされます
(8) delete
delete を使用して明示的に宣言された変数および関数を削除することはできません
2. 組み込みオブジェクトの変更
1.オブジェクト オブジェクト
(1) 継承関連メソッド: create()、getPrototypeOf()
(2) 属性関連メソッド:defineProperty()、defineProperties()、getOwnPropertyDescriptor()、getOwnPropertyNames() 、keys()
(3) 改ざん防止メソッド:preventExtensions()、isExtensible()、seal()、isSealed()、freeze()、isFrozen()
2.オブジェクト
(1) binding() メソッドを追加しました。
(2) 関数オブジェクトの属性呼び出し元を正規化します。これは、現在の関数を呼び出す関数への参照を指すために使用されます。
(3) プロトタイプが列挙不可能である
3. 配列オブジェクト
(1) 判定方法: obj かどうかを判定する静的メソッド Array.isArray(obj) を追加Array オブジェクトのインスタンス。
(2) Index メソッド: 指定した項目のインデックスを検索するための 2 つのメソッド、indexOf() と lastIndexOf() を追加しました。検索時の一致には一致 (===) を使用します。
(3) 反復メソッド: Every()、some()、forEach()、map()、filter() メソッドを追加しました。
(4) Reduce メソッド:reduce() メソッドとreduceRight() メソッドを追加しました。
4. 文字列オブジェクト
Trim() メソッドを追加しました。
5. JSON オブジェクト
ネイティブ JSON 組み込みオブジェクトを追加しました。
6. Date オブジェクト
Date.now()、Date.prototype.toJSON() などのメソッドを追加しました。
7. RegExp オブジェクト
ES3 では正規表現リテラルを使用する際に RegExp インスタンスを共有しますが、ES5 では正規表現リテラルを使用するたびに新しいインスタンスを作成する必要があります。 RegExp コンストラクターを使用するのと同じように、RegExp インスタンス。