Một số Object Methods mới trong JavaScript ES5
ECMAScript 5 đã thêm rất nhiều Object Methods mới vào JavaScript.
ES5 New Object Methods
// Thêm hoặc thay đổi một object property Object.defineProperty(object, property, descriptor) // Thêm hoặc thay đổi nhiều object properties Object.defineProperties(object, descriptors) // Truy cập các properties Object.getOwnPropertyDescriptor(object, property) // Return tất cả object properties dưới dạng một array Object.getOwnPropertyNames(object) // Return enumerable properties dưới dạng một array Object.keys(object) // Truy cập prototype Object.getPrototypeOf(object) // Ngăn chặn thêm properties vào một object Object.preventExtensions(object) // Return true nếu các properties có thể được thêm vào một object Object.isExtensible(object) // Ngăn chặn thay đổi object properties (not values) Object.seal(object) // Return true nếu object bị sealed (niêm phong) Object.isSealed(object) // Ngăn chặn bất kỳ thay đổi nào đối với một object Object.freeze(object) // Return true nếu object bị frozen (đóng băng) Object.isFrozen(object)
1. Thay đổi giá trị của Property
– Cú pháp:
Object.defineProperty(objectName, "propertyName", {value : newValue})
– Ví dụ: Thay đổi giá trị thuộc tính “color” của đối tượng “car”.
// Tạo đối tượng car: var car = { brand : "Toyota", name : "Prius 2018", color : "White" }; // Thay đổi giá trị thuộc tính color Object.defineProperty(car, "color", {value : "Red"}) car.color; // return RedTry it »
2. Thay đổi Meta Data
– Trong ES5, bạn có thể thay đổi meta data property sau:
writable : true // Giá trị property có thể thay đổi enumerable : true // Property có thể được liệt kê configurable : true // Property có thể được config lại
writable : false // Giá trị property không thể thay đổi enumerable : false // Property không thể liệt kê configurable : false // Property không thể config lại
– ES5 cho phép thay đổi getters và setters:
// Định nghĩa một getter get: function() { return color } // Định nghĩa một setter set: function(value) { color = value }
– Ví dụ: làm cho thuộc tính “color” chỉ đọc (read-only):
Object.defineProperty(car, "color", {writable:false});
– Ví dụ: làm cho thuộc tính “color” không thể liệt kê (enumerable):
Object.defineProperty(car, "color", {enumerable:false});
3. Liệt kê tất cả các Properties
Ví dụ:
var car = { brand : "Toyota", name : "Prius 2018", color : "White", weight : 850 }; Object.getOwnPropertyNames(car); // brand,name,color,weightTry it »
4. Liệt kê các Enumerable Properties
Ví dụ sau chỉ liệt kê các Enumerable Properties của một đối tượng:
var car = { brand : "Toyota", name : "Prius 2018", color : "White", weight : 850 }; // Thay đổi property meta data "enumerable" của "color" property Object.defineProperty(car, "color", {enumerable:false}); Object.keys(car); // brand,name,weightTry it »
5. Thêm mới một Property cho đối tượng
Ví dụ:
var car = { brand : "Toyota", name : "Prius 2018", color : "White" }; // Thêm một property mới Object.defineProperty(car, "weight", {value:850});Try it »
6. Thêm Getters và Setters
– Phương thức Object.defineProperty() cũng có thể được sử dụng để thêm Getters và Setters:
Ví dụ:
// Tạo đối tượng: var car = {brand:"Toyota", name:"Prius 2018", color:"White"}; // Định nghĩa một getter Object.defineProperty(car, "getFullName", { get : function () {return this.brand + " " + this.name;} }); // Hiển thị tên xe car.getFullName; // Toyota Prius 2018Try it »
– Ví dụ về một Counter:
// Define object var obj = {counter:0}; // Define setters Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (i) {this.counter += i;} }); // Play with the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; // return 4Try it »
[…] Các phương thức Object Property mới […]