Đăng nhập
Bạn chưa có tài khoản? Đăng ký.
Bạn đã quên password?
// Tạo đối tượng với một đối tượng hiện có làm nguyên mẫu Object.create() // Thêm hoặc thay đổi một thuộc tính đối tượng Object.defineProperty(object, property, descriptor) // Thêm hoặc thay đổi thuộc tính đối tượng Object.defineProperties(object, descriptors) // Truy cập thuộc tính Object.getOwnPropertyDescriptor(object, property) // Trả về tất cả các thuộc tính dưới dạng một mảng Object.getOwnPropertyNames(object) // Truy cập nguyên mẫu Object.getPrototypeOf(object) // Trả về các thuộc tính có thể liệt kê dưới dạng một mảng Object.keys(object)
// Ngăn thêm thuộc tính vào một đối tượng Object.preventExtensions(object) // Trả về true nếu các thuộc tính có thể được thêm vào một đối tượng Object.isExtensible(object) // Ngăn các thay đổi của thuộc tính đối tượng (không phải giá trị) Object.seal(object) // Trả về true nếu đối tượng được bảo mật Object.isSealed(object) // Ngăn chặn bất kỳ thay đổi nào đối với một đối tượng Object.freeze(object) // Trả về true nếu đối tượng bị đóng băng Object.isFrozen(object)
Cú pháp
Object.defineProperty(object, property, {value : value})
Ví dụ bên dưới sẽ thực hiện thay đổi giá trị thuộc tính.
Ví dụ
// Tạo một đối tượng const person = { firstName: "John", lastName: "Doe", language: "Việt Nam" }; // Thay đổi thuộc tính language Object.defineProperty(person,"language",{value : "No"});
ES5 cho phép thay đổi dữ liệu thuộc tính meta sau.
writable : true // Giá trị thuộc tính có thể được thay đổi enumerable : true // Thuộc tính có thể được liệt kê configurable : true // Thuộc tính có thể được cấu hình lại
writable : false // Giá trị thuộc tính không thể thay đổi enumerable : false // Thuộc tính không thể được liệt kê configurable : false // Thuộc tính không thể được cấu hình lại
ES5 cho phép thay đổi getters và setters.
// Định nghĩa getter get: function() { return language } // Định nghĩa setter set: function(value) { language = value }
Ví dụ này làm cho thuộc tính language ở chế độ chỉ đọc.
Object.defineProperty(person,"language",{wriable: false})
Ví dụ này làm cho thuộc tính language không liệt kê được.
Object.defineProperty(person,"language",{enumerable: false})
Ví dụ này liệt kê tất cả các thuộc tính của một đối tượng.
Ví dụ
// Tạo một đối tượng const person = { firstName: "John", lastName: "Doe", language: "Việt Nam" }; Object.defineProperty(person,"language",{enumerable : false}); var x = Object.getOwnPropertyNames(person);
Ví dụ này chỉ liệt kê các thuộc tính có thể liệt kê của một đối tượng.
Ví dụ
// Tạo một đối tượng const person = { firstName: "John", lastName: "Doe", language: "Việt Nam" }; Object.defineProperty(person,"language",{enumerable : false}); var x = Object.keys(person);
Ví dụ này thêm một thuộc tính mới vào một đối tượng.
Phương thức Object.defineProperty()
cũng có thể được sử dụng để thêm Getters and Setters.
Ví dụ
// Thêm getter Object.defineProperty(person,"fullName",{get : function(){ return this.firstName + " " + this.lastName; }});
Ví dụ
// Tạo đối tượng const count = {counter: 0}; // Thêm các thuộc tính Object.defineProperty(count,"reset",{ get : function(){ this.counter = 0; } }); Object.defineProperty(count,"increment",{ get : function(){ this.counter++; } }); Object.defineProperty(count,"decrement",{ get : function(){ this.counter--; } }); Object.defineProperty(count,"add",{ set : function(value){ this.counter += value; } }); Object.defineProperty(count,"subtract",{ set : function(value){ this.counter -= value; } }); count.reset; count.increment; count.increment; count.increment; count.decrement; count.subtract = 2; count.add = 10; count.subtract = 4; document.getElementById('demo').innerHTML = count.counter;