時隔多年,在 2009 年時總算推出了 ES5,經過多年的準備,ES5 也添加了許多的功能,讓我們來看一下有哪些功能吧
String.trim()
主要用途為清除字串前後的多餘空白,尤其在帳號驗證時非常常使用。var stringTemplate = "ab\
c"; // abc
var str = "TEST";
str[1] // "E"
var str2 = " Empty String ";
str2.trim() // "Empty String"
var obj = {
a: 1,
b: 2,
c: 3
}
var arr = [
1,
2,
3
]
var module = {
x: 42,
getX: function() {
return this.x;
}
};
var retrieveX = module.getX;
console.log(retrieveX()); // undefined,因為 this 是全局對象或未定義
var boundGetX = retrieveX.bind(module);
console.log(boundGetX()); // 42
// Create an Object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true, // 設定此屬性是否可以修改
enumerable : true, // 控制對象屬性是否可枚舉,即是否可以在 for...in 循環或 Object.keys() 中被列舉出來
configurable : true // 控制對象屬性是否可配置,即是否可以刪除該屬性或修改它的屬性描述符
});
8.Object Getter Setter:在 ES5 時推出了物件屬性的 getter 和 setter,透過此設定可以快速地設定和建立取出模板
var person = {
firstName: 'John',
lastName: 'Doe',
// 定義 getter
get fullName() {
return this.firstName + " " + this.lastName;
},
// 定義 setter
set fullName(value) {
var parts = value.split(' ');
this.firstName = parts[0];
this.lastName = parts[1];
}
};
// 使用 getter 獲取 fullName
console.log(person.fullName); // 輸出 "John Doe"
// 使用 setter 設置 fullName
person.fullName = 'Jane Smith';
console.log(person.firstName); // 輸出 "Jane"
console.log(person.lastName); // 輸出 "Smith"
console.log(person.fullName); // 輸出 "Jane Smith"
var timestamp = Date.now();
console.log(timestamp); // 1692612485000(從 1970 年 1 月 1 日 00:00:00 UTC 到現在的毫秒數)
var now = new Date();
var isoString = now.toISOString();
console.log(isoString); // 2024-08-21T12:34:56.789Z
var jsonString = now.toJSON();
console.log(jsonString); // 例如:2024-08-21T12:34:56.789Z