ES6詳解一:複習ES5 新增內容
阿新 • • 發佈:2019-01-04
ES5 新增內容
ES6 最近炒得火熱,準備寫一下ES6規範的主要內容。在這之前先複習一下ES5相關的內容。
ES5 總體來說改動很少,最重要的是如下幾個改動:
use strict
可以在函式定義的第一行通過一個字串語法把這個函式宣告為 嚴格模式
function() {
"use strict";
}
在嚴格模式下,會有如下一些限制:
- 未宣告的變數賦值直接報錯,而不是變成全域性變數
- 函式預設的
this
將變成undefined
而不是預設指向window
- 對只讀屬性進行寫操作,刪除不可刪除屬性,對不可拓展的物件新增屬性均會丟擲異常
- 禁止使用 with 語句
- 重名的屬性會報錯,重名的函式引數會報錯
JSON 支援
預設支援 JSON.parse
和 JSON.stringify
物件和屬性
現在可以對一個物件的屬性設定 getter
setter
:
var obj = {};
Object.defineProperty(obj, "name", {
get: function() {
return name.toUpperCase();
},
set: function(n) {
name=n;
}
})
可以定義一個物件的屬性是否可以修改、是否可以刪除、是否可以新增:
Object.defineProperty( obj, "value", { value: true, writable: false, enumerable: true, configurable: true });
現在可以直接凍結一個物件,凍結分兩種:
- Object.seal(obj), 使物件的屬性配置配置無法修改,等價於給每一個屬性都設定成
configurale=false
- Object.freeze(obj),除了 seal 之外,它還會是屬性值本身無法被修改,相當於對每個屬性同時進行了
configurable=false
和writable=false
現在可以更方便的遍歷物件的屬性了:
- Object.getOwnPropertyNames
- Object.keys
陣列新增方法
陣列新增瞭如下常用的方法:
- map
- every
- filter
- forEach
- indexOf
- reduce
- reduceRight
- some
所以你可以放心的寫如下程式碼:
[1,2,3].map(function(a){return a*a;})