ES5,即 ECMAScript 5,是 JavaScript 的當前版本之一。在 JavaScript 語言的歷史發展進程中,ES5 是一個重要的版本,它對現有的語言進行了大量的標準化和優化,使得 JavaScript 在語法和功能上更加完善和健壯。
一、嚴格模式
ES5 引入了嚴格模式(strict mode),我們可以在代碼的開頭添加字元串 “use strict” 來啟用它。使用嚴格模式能夠使代碼變得更加規範,避免了一些不規範的行為,例如:
'use strict';
// 不能使用未聲明的變數 x
x = 10;
// 不能重複聲明變數 x
var x = 10;
// 不能刪除變數 y
delete y;
// 在函數中不能使用八進位字面量
function test() {
'use strict';
var num = 012;
}';
除了上面的行為限制外,還有其他一些更加細微的區別。例如,在嚴格模式下,函數的 this 關鍵字在全局環境中指向 undefined。
二、對象增強功能
ES5 對象增加了一些新的方法和屬性,使得我們可以更加方便地操作對象。這些新功能包括:
1. Object.create()
Object.create() 方法可以使用指定的原型對象創建一個新對象。我們可以通過以下方式創建一個繼承自 Object.prototype 的對象:
var obj = Object.create(Object.prototype);
2. Object.defineProperty()
Object.defineProperty() 方法可以定義或修改一個對象的屬性。我們可以通過以下方式定義一個只讀的、可枚舉的屬性:
var obj = {};
Object.defineProperty(obj, 'name', {
value: 'Alice',
writable: false,
enumerable: true,
configurable: false
});
3. Object.defineProperties()
Object.defineProperties() 方法可以定義或修改一個對象的多個屬性。我們可以通過以下方式定義一個具有多個只讀常量的對象:
var obj = {};
Object.defineProperties(obj, {
PI: {
value: 3.14,
writable: false
},
E: {
value: 2.71,
writable: false
}
});
4. Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptor() 方法可以獲取一個對象的屬性的描述符。我們可以通過以下方式獲取一個屬性的描述符:
var obj = {
name: 'Alice'
};
var desc = Object.getOwnPropertyDescriptor(obj, 'name');
三、函數增強功能
除了對象增強功能外,ES5 還為函數增加了一些新的方法和屬性,可以更加方便地操作函數。這些新功能包括:
1. Function.prototype.bind()
Function.prototype.bind() 方法創建一個新的函數,將第一個參數作為新函數的 this 關鍵字,然後返回這個新函數。
var obj = {
name: 'Alice'
};
function greet() {
console.log('Hello, ' + this.name);
}
var say = greet.bind(obj);
say(); // 輸出 "Hello, Alice"
2. arguments 對象
ES5 改變了 arguments 對象的一些行為,使得它更加規範和可靠。例如,在 ES5 中,我們可以使用 arguments.callee 屬性來引用當前正在執行的函數:
function foo() {
console.log(arguments.callee);
}
foo(); // 輸出 "function foo() {...}"
3. JSON.stringify()
JSON.stringify() 方法可以將 JavaScript 對象序列化為 JSON 字元串。我們可以使用它來將一個對象轉化為字元串,並進行傳遞或持久化存儲。
var obj = {
name: 'Alice',
age: 18
};
var str = JSON.stringify(obj); // "{"name":"Alice","age":18}"
四、其他新特性
1. Array.isArray()
Array.isArray() 方法可以判斷一個對象是否為數組:
Array.isArray([1, 2, 3]); // true
Array.isArray({1: 'hello', 2: 'world'}); // false
2. Date.now()
Date.now() 方法可以返回當前時間的 Unix 時間戳(毫秒):
var now = Date.now(); // 1625514759338
3. String.prototype.trim()
String.prototype.trim() 方法可以刪除一個字元串的開頭和結尾的空格:
var str = ' hello, world ';
str.trim(); // "hello, world"
總結
ES5 引入了很多重要的新功能和改進,使得 JavaScript 語言更加健壯、靈活和可靠。通過了解這些新功能和改進,我們可以更加方便地使用 JavaScript 編寫高效、易維護的代碼。
原創文章,作者:UQCAW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371538.html