自分で使えるECMAScript 6の特性を集めます.
4814 ワード
for...of VS for...in
for...of , :
let nicknames = ['di', 'boo', 'punkeye'];
nicknames.size = 3;
for (let nickname of nicknames) {
console.log(nickname);
}
Result: di, boo, punkeye
for...in :
let nicknames = ['di', 'boo', 'punkeye'];
nicknames.size = 3;
for (let nickname in nicknames) {
console.log(nickname);
}
Result: 0, 1, 2, size
WeakMap
WeakMap Map, key , WeakMap , 。
,WeakMap key 。 delete(key),has(key),get(key) set(key, val):
let w = new WeakMap();
w.set('a', 'b');
// Uncaught TypeError: Invalid value used as weak map key
var o1 = {},
o2 = function(){},
o3 = window;
w.set(o1, 37);
w.set(o2, "azerty");
w.set(o3, undefined);
w.get(o3); // undefined, because that is the set value
w.has(o1); // true
w.delete(o1);
w.has(o1); // false
クラスES 6にはクラス文法があります.ここのクラスは新しい対象継承モデルではなく、プロトタイプチェーンのシンタックスキャンディー表現形式です.
関数でstaticキーワードを使って構造関数を定義する方法と属性:
class Task {
constructor() {
console.log("task instantiated!");
}
showId() {
console.log(23);
}
static loadAll() {
console.log("Loading all tasks..");
}
}
console.log(typeof Task); // function
let task = new Task(); // "task instantiated!"
task.showId(); // 23
Task.loadAll(); // "Loading all tasks.."
これはc言語と同じです.クラスの継承とオーバーセット:class Car {
constructor() {
console.log("Creating a new car");
}
}
class Porsche extends Car {
constructor() {
super();
console.log("Creating Porsche");
}
}
let c = new Porsche();
// Creating a new car
// Creating Porsche
extensは、サブクラスの親クラスを継承することができます.サブクラスのconstructor関数ではsuper()関数を実行する必要があります.もちろん、super.parent MethodName()のように、サブタイプの方法で父親タイプの方法を呼び出すこともできます.