JS--ES 2015/6 の新機能の概要
ES 2015/6 には、非常に多くの新しいコンテンツがあります。ここでは、これらの機能の概要のみを示します (必ずしも包括的ではありません)。実際、この記事はそれを要約することを目的としており、これらの特性についての詳細な議論や調査は行いません。そして、時間があれば、何回かに分けてブログを書いて、よく使われるポイントを掘り下げて、皆さんと深く交流していきたいと思います。
アロー関数
アロー関数は、=>
構文で実装される関数の短い形式で、C#/JAVA8/CoffeeScript でも同様の構文を持ちます。関数とは異なり、アロー関数は同じ this
を実行コンテキストと共有します。アロー関数が関数オブジェクト内にある場合、その関数と arguments
変数を共有します。 =>
语法实现的函数简写形式,C#/JAVA8/CoffeeScript 中都有类似语法。与函数不同,箭头函数与其执行下文环境共享同一个 this
。如果一个箭头函数出现在一个函数对象内部,它会与这个函数共享 arguments
变量。
// Expression bodiesvar odds = evens.map(v => v + 1);var nums = evens.map((v, i) => v + i);// Statement bodiesnums.forEach(v => { if (v % 5 === 0) fives.push(v);});// Lexical thisvar bob = { _name: "Bob", _friends: ['jim'], printFriends() { this._friends.forEach(f => console.log(this._name + " knows " + f)); // Bob knows jim }};// Lexical argumentsfunction square() { let example = () => { let numbers = []; for (let number of arguments) { numbers.push(number * number); } return numbers; }; return example();}square(2, 4, 7.5, 8, 11.5, 21); // returns: [4, 16, 56.25, 64, 132.25, 441]
类 Class
Javascript 类
并不是引入了一个新的面向对象的对象继承模型,而是基于原型继承的语法糖。其提供了一个更简单和清晰的语法来创建对象并处理继承。
class Rectangle { constructor(height, width) { this.height = height; this.width = width; }}
类没有声明提升,必须确保在调用前已经进行了声明。
构造函数 constructor
是一个特殊的方法,其用于创建和初始化类的实例。
静态方法 static
关键字用于声明静态方法
创建子类 extends
关键字用于创建子类,这里要注意:extends 不能用于扩展常规对象(不可构造/非构造的),如果要继承常规对象,可使用 Object.setPrototypeOf()
。
调用超类 super
关键字可以用来调用父类中的方法
Mix-ins
混合
增强的对象字面量
通过字面量形式可以实现,定义prototype、键值对简写、定义方法等、动态属性名称。
var obj = { // Sets the prototype. "__proto__" or '__proto__' would also work. __proto__: theProtoObj, // Computed property name does not set prototype or trigger early error for // duplicate __proto__ properties. ['__proto__']: somethingElse, // Shorthand for ‘handler: handler’ handler, // Methods toString() { // Super calls return "d " + super.toString(); }, // Computed (dynamic) property names [ "prop_" + (() => 42)() ]: 42};
模板字符串
模板字符串 提供构造字符串的语法糖,在 Prel/python 等语言中也都有类似特性。
// Basic literal string creation `This is a pretty little template string.` // Multiline strings `In ES5 this is not legal.` // Interpolate variable bindings var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?` // Unescaped template strings String.raw`In ES5 "\n" is a line-feed.` // Construct an HTTP request prefix is used to interpret the replacements and construction GET`http://foo.org/bar?a=${a}&b=${b} Content-Type: application/json X-Credentials: ${credentials} { "foo": ${foo}, "bar": ${bar}}`(myOnReadyStateChangeHandler);
解构赋值
Destructuring 法是一个Javascript表达式,这使得可以将值从数组或属性从对象提取到不同的变量中。
// list matching var [a, ,b] = [1,2,3]; a === 1; b === 3; // object matching (用新变量名赋值) var { op: a, lhs: { op: b }, rhs: c } = getASTNode() // object matching shorthand // binds `op`, `lhs` and `rhs` in scope var {op, lhs, rhs} = getASTNode() // Can be used in parameter position function g({name: x}) { console.log(x); } g({name: 5}) // Fail-soft destructuring var [a] = []; a === undefined; // Fail-soft destructuring with defaults var [a = 1] = []; a === 1; // 变量可以先赋予默认值。当要提取的对象没有对应的属性,变量就被赋予默认值。 var {a = 10, b = 5} = {a: 3}; console.log(a); // 3 console.log(b); // 5 // Destructuring + defaults arguments function r({x, y, w = 10, h = 10}) { return x + y + w + h; } r({x:1, y:2}) === 23 // 对象属性计算名和解构 let key = "z"; let { [key]: foo } = { z: "bar" }; console.log(foo); // "bar"
Default + Rest + Spread
为函数参数提供默认值 & ...
定数量参数
function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y; } f(3) == 15 function f(x, ...y) { // y is an Array return x * y.length; } f(3, "hello", true) == 6 function f(x, y, z) { return x + y + z; } // Pass each elem of array as argument f(...[1,2,3]) == 6
Let + Const
let
用于声明块级作用域变量。 const
function f() {
{
let x;
{
// this is ok since it's a block scoped name
const x = "sneaky";
// error, was just defined with `const` above
x = "foo";
}
// this is ok since it was declared with `let`
x = "bar";
// error, already declared above in this block
let x = "inner";
}
}
ログイン後にコピー
function f() { { let x; { // this is ok since it's a block scoped name const x = "sneaky"; // error, was just defined with `const` above x = "foo"; } // this is ok since it was declared with `let` x = "bar"; // error, already declared above in this block let x = "inner"; } }
Class Class
Class
は、新しいオブジェクト指向のオブジェクト継承モデルを導入していませんが、プロトタイプ継承の構文に基づいています。砂糖。これにより、オブジェクトの作成と継承の処理のための、より単純かつ明確な構文が提供されます。 let fibonacci = { [Symbol.iterator]() { let pre = 0, cur = 1; return { next() { [pre, cur] = [cur, pre + cur]; return { done: false, value: cur } } } } } for (var n of fibonacci) { // truncate the sequence at 1000 if (n > 1000) break; console.log(n); }
このクラスは昇格を宣言していません。呼び出す前に宣言されていることを確認する必要があります。
Constructor <code>constructor</code> は、クラスのインスタンスを作成および初期化するために使用される特別なメソッドです。 🎜🎜静的メソッド <code>static</code> キーワードは静的メソッドの宣言に使用されます 🎜🎜サブクラスの作成 <code>extends</code> キーワードはサブクラスの作成に使用されます。ここで注意してください: extends は通常のオブジェクトの拡張には使用できません(非構築可能/非構築可能)、通常のオブジェクトから継承したい場合は、<code>Object.setPrototypeOf()</code> を使用できます。 🎜🎜スーパークラスの呼び出し <code>super</code> キーワードを使用して、親クラスのメソッドを呼び出すことができます 🎜🎜<code>Mix-ins</code> をミックスします 🎜🎜拡張オブジェクトリテラル 🎜🎜リテラル形式を通じて行うことができますプロトタイプ、キーと値のペアの省略形、メソッドなどの定義、および動的属性名を定義することによって実装されます。 🎜<p class="sourceCode">🎜🎜<pre class="brush:js;toolbar:false;">function* quips(name) { yield "你好 " + name + "!"; yield "希望你能喜欢这篇介绍ES6的译文"; if (name.startsWith("X")) { yield "你的名字 " + name + " 首字母是X,这很酷!"; } yield "我们下次再见!"; }
🎜🎜rrreee🎜代入の分割🎜🎜 Destructuring メソッドは Javascript 式で、これを使用すると、配列から値を抽出したり、オブジェクトのプロパティを別の変数に抽出したりすることができます。 🎜rrreee🎜Default + Rest + Spread🎜🎜関数パラメータのデフォルト値と ...
の固定数のパラメータを提供します🎜rrreee🎜Let + Const🎜🎜let
は宣言ブロックのレベルスコープ変数に使用されます。 const
は定数を宣言するために使用されます。 🎜rrreee🎜Iterator🎜🎜 カスタム反復子を作成するには、symbol.iterator を使用します。 🎜rrreee🎜🎜🎜🎜ジェネレーター🎜🎜通常の関数は関数宣言を使用しますが、ジェネレーター関数は function* 宣言を使用します。 🎜🎜ジェネレーター関数内には、return に似た構文、キーワード yield があります。 2 つの違いは、通常の関数は 1 回しか返せないのに対し、ジェネレーター関数は複数回返せることです (もちろん、1 回だけ返すこともできます)。ジェネレーターの実行中、yield 式に遭遇するとすぐに一時停止され、後で実行状態を再開できます。 🎜rrreee🎜Unicode🎜🎜// ES5.1と同じ
」
以上がJS--ES 2015/6 の新機能の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









win7システムには、win7Ultimateバージョン、Win7Professionalバージョン、Win7Homeバージョンなど、多くのバージョンがあることは誰もが知っています。多くのユーザーは、HomeバージョンとUltimateバージョンの間で迷っており、どのバージョンを選択すればよいかわかりません。そこで今日は、Win7 Family Meal と Win7 Ultimate の違いについて説明します。 1. Experience Different Home Basic Edition を使用すると、日常の操作がより迅速かつ簡単になり、最も頻繁に使用されるプログラムやドキュメントにより迅速かつ便利にアクセスできるようになります。 Home Premium は最高のエンターテインメント体験を提供し、お気に入りのテレビ番組、写真、ビデオ、音楽を簡単に楽しんだり共有したりできます。 Ultimate Edition は、各エディションのすべての機能を統合し、Windows 7 Home Premium のすべてのエンターテイメント機能とプロフェッショナル機能を備えています。

SpringMVC の主要な機能を理解する: これらの重要な概念を習得するには、特定のコード例が必要です。 SpringMVC は、開発者が Model-View-Controller (MVC) アーキテクチャ パターンを通じて柔軟でスケーラブルな構造を構築するのに役立つ Java ベースの Web アプリケーション開発フレームワークです。ウェブアプリケーション。 SpringMVC の主要な機能を理解して習得すると、Web アプリケーションをより効率的に開発および管理できるようになります。この記事では、SpringMVC の重要な概念をいくつか紹介します。

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

インターネットの急速な発展に伴い、プログラミング言語は常に進化し、更新されています。中でもGo言語はオープンソースのプログラミング言語として近年注目を集めています。 Go 言語は、シンプル、効率的、安全で、開発とデプロイが簡単になるように設計されています。高い同時実行性、高速なコンパイル、メモリの安全性などの特徴を備えており、Web開発、クラウドコンピューティング、ビッグデータなどの分野で広く使用されています。ただし、現在、Go 言語のさまざまなバージョンが利用可能です。適切な Go 言語バージョンを選択するときは、要件と機能の両方を考慮する必要があります。頭

win11 にアップデートしたいけど、win11 にバグが多いのか、アップデートで問題が発生するのか分からないという人もいますが、実際、win11 には現在バグがありますが、使用にはほとんど影響がありません。 win11 には多くのバグがありますか? 回答: win11 にはまだ多くのバグがあります。ただし、これらのバグは日常の使用にはほとんど影響しません。ユーザーの日常使用に対する要求が高い場合は、後で使用することをお勧めします。 win11 のバグの概要 1. リソース マネージャー 1. メモリ オーバーフローが発生し、リソース マネージャーのメモリ使用量が高くなる場合があります。 2. この状況ではメモリが 70% 以上を占有し、コンピュータがフリーズしたりクラッシュしたりすることがあります。 2. 競合とクラッシュ 1. 一部のアプリケーションには互換性が不十分であり、相互に競合が発生します。 2.紛争手続きは比較的少ないですが、

5g の 3 つの特徴は次のとおりです: 1. 高速; 実用的なアプリケーションでは、5G ネットワークの速度は 4G ネットワークの 10 倍以上です。 2. 低遅延; 5G ネットワークの遅延は約数十ミリ秒であり、人間の反応速度よりも高速です。 3. 幅広い接続: 5G ネットワークの出現と他のテクノロジーの組み合わせにより、すべてのインターネットの新しいシーンが生まれます。

C++ 関数には、単純関数、const 関数、静的関数、および仮想関数というタイプがあり、インライン関数、デフォルト パラメーター、参照戻り値、およびオーバーロードされた関数などの機能が含まれます。たとえば、calculateArea 関数は π を使用して、指定された半径の円の面積を計算し、それを出力として返します。

Java の特徴は次のとおりです: 1. シンプルで学習が簡単; 2. オブジェクト指向なので、コードの再利用性と保守性が向上します; 3. プラットフォームに依存せず、さまざまなオペレーティング システムで実行可能; 4. 自動ガベージによるメモリ管理収集メカニズム メモリの管理 5. 強力な型チェック、変数は使用前に型を宣言する必要がある 6. セキュリティ、不正なアクセスや悪意のあるコードの実行を防ぐことができる 7. マルチスレッドのサポート、パフォーマンスと応答性を向上させることができるプログラム ; 8. 例外処理によりプログラムのクラッシュを回避できる; 9. 多数の開発ライブラリとフレームワーク; 10. オープンソースのエコシステム。
