最新の ES8 機能の概要

巴扎黑
巴扎黑オリジナル
2017-07-21 09:59:313706ブラウズ

ECMAScript 2017 (ES8) の機能概要は ES8 のリリースからまとめられており、その主な新機能は著者の「最新の JavaScript 開発: 構文の基礎と実践的なスキル」シリーズの記事にまとめられています。毎週のフロントエンドもフォローしてください。リストシリーズを使用して直接情報を入手します。

ECMAScript 2017 または ES8 は、2017 年 6 月末に TC39 によって正式にリリースされました。ここで完全版を参照できます。ES8 の代表的な機能には、文字列の埋め込み、オブジェクト値のトラバーサル、オブジェクト属性記述子の取得、トレーリングなどがあります。関数パラメータのリストと呼び出し、非同期関数、共有メモリとアトミック操作などのカンマ。

文字列埋め込み

ES8 には、padStart と PadEnd という組み込みの文字列埋め込み関数が追加されました。この関数は、開発者が文字列の先頭または末尾を埋めることで、文字列が固定長に達するようにすることができます。関数は次のように宣言されます:

str.padStart(targetLength [, padString])

str.padEnd(targetLength [, padString])

上に示すように、関数の最初のパラメータは、最終的に生成される文字列の長さであるターゲット長です。2 番目のパラメータは、指定されたパディング文字列です。

'es8'.padStart(2);          // 'es8'
'es8'.padStart(5);          // '  es8'
'es8'.padStart(6, 'woof');  // 'wooes8'
'es8'.padStart(14, 'wow');  // 'wowwowwowwoes8'
'es8'.padStart(7, '0');     // '0000es8'
'es8'.padEnd(2);          // 'es8'
'es8'.padEnd(5);          // 'es8  '
'es8'.padEnd(6, 'woof');  // 'es8woo'
'es8'.padEnd(14, 'wow');  // 'es8wowwowwowwo'
'es8'.padEnd(7, '6');     // 'es86666'
オブジェクト値トラバーサル

Object.values 関数は、指定されたオブジェクトの列挙可能な属性値の配列を返します。配列内の値の順序は for-in ループと一致します。関数宣言は次のとおりです:

Object.values(obj)
最初のパラメータ obj は、オブジェクトまたは配列にすることができます (配列はキーが添字であるオブジェクトと見なすことができます)。

const obj = { x: 'xxx', y: 1 };
Object.values(obj); // ['xxx', 1]

const obj = ['e', 's', '8']; // same as { 0: 'e', 1: 's', 2: '8' };
Object.values(obj); // ['e', 's', '8']

// when we use numeric keys, the values returned in a numerical 
// order according to the keys
const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.values(obj); // ['yyy', 'zzz', 'xxx']
Object.values('es8'); // ['e', 's', '8']

Object.entries メソッドは、列挙可能なプロパティと値を 2 次元配列の形式で返します。配列内の順序は Object.values の宣言と使用法と一致します。この関数は次のとおりです:

const obj = { x: 'xxx', y: 1 };
Object.entries(obj); // [['x', 'xxx'], ['y', 1]]

const obj = ['e', 's', '8'];
Object.entries(obj); // [['0', 'e'], ['1', 's'], ['2', '8']]

const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.entries(obj); // [['1', 'yyy'], ['3', 'zzz'], ['10': 'xxx']]
Object.entries('es8'); // [['0', 'e'], ['1', 's'], ['2', '8']]

オブジェクトのプロパティ記述子を取得します
getOwnPropertyDescriptors 関数 指定されたオブジェクトの指定された属性の記述子を返します。属性はプロトタイプから継承されるのではなく、オブジェクト自体によって定義される必要があります。関数の宣言は次のとおりです:

Object.getOwnPropertyDescriptor(obj, prop)

obj はソース オブジェクトであり、prop は表示する必要があるものです 結果に含まれるキーは、設定可能、列挙可能、書き込み可能、​​取得、設定、および値です。 。

const obj = { get es8() { return 888; } };
Object.getOwnPropertyDescriptor(obj, 'es8');
// {
//   configurable: true,
//   enumerable: true,
//   get: function es8(){}, //the getter function
//   set: undefined
// }

関数パラメータリストと呼び出しの末尾のカンマ
この機能を使用すると、エラーを報告せずに関数を定義または呼び出すときに末尾のカンマを追加できます:

function es8(var1, var2, var3,) {
  // ...
}
es8(10, 20, 30,);

非同期関数
はES8で許可されています非同期関数を定義して実行するための async/await 構文では、async キーワードは AsyncFunction オブジェクトを返します。内部実装では、非同期関数とイテレーターの実装原則は似ていますが、イテレーター関数には変換されません。

共有メモリとアトミック操作

共有メモリを使用すると、複数のスレッドが同時にデータの読み取りと書き込みを行うことができ、アトミック操作により同時実行制御が可能になり、複数の競合するスレッドの順次実行が保証されます。このセクションでは、新しいコンストラクター SharedArrayBuffer と、静的メソッドを含む名前空間オブジェクト Atomics を紹介します。 Atomic オブジェクトは Math に似ています。そのインスタンスを直接作成することはできませんが、提供される静的メソッドのみを使用できます:

add /sub - 特定の位置で値を加算または減算します

    and / or / xor - ビット演算を実行します
  • load - 値を取得します

以上が最新の ES8 機能の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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