Phương thức đối tượng JavaScript ES5
- Trang trước Giao diện原型 JS
- Trang tiếp theo Định nghĩa hàm JS
ECMAScript 5 (2009) đã thêm nhiều phương pháp đối tượng mới cho JavaScript.
Quản lý đối tượng
// Tạo đối tượng từ đối tượng hiện có Object.create() // Thêm hoặc thay đổi 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ề một mảng tất cả các thuộc tính Object.getOwnPropertyNames(object) // Truy cập nguyên mẫu Object.getPrototypeOf(object) // Trả về một mảng các thuộc tính có thể liệt kê Object.keys(object)
Bảo vệ đối tượng
// Ngăn cản thêm thuộc tính vào đối tượng Object.preventExtensions(object) // Nếu thuộc tính có thể thêm vào đối tượng, sẽ trả về true Object.isExtensible(object) // Ngăn cản thay đổi thuộc tính đối tượng (không phải giá trị) Object.seal(object) // Nếu đối tượng bị đóng kín, sẽ trả về true Object.isSealed(object) // Ngăn cản bất kỳ thay đổi nào đối với đối tượng Object.freeze(object) // Nếu đối tượng bị đóng băng, sẽ trả về true Object.isFrozen(object)
thay đổi giá trị thuộc tính
cú pháp
Object.defineProperty(object, property, {value : value)
thực thể
Ví dụ này thay đổi giá trị thuộc tính:
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Thay đổi thuộc tính Object.defineProperty(person, "language", {value : "NO"});
Thay đổi metadata
ES5 cho phép thay đổi các thuộc tính metadata sau:
writable : true // 属性值可更改 enumerable : true // 属性可枚举 configurable : true // 属性可重新配置
writable : false // 属性值不可更改 enumerable : false // 属性不可枚举 configurable : false // thuộc tính không thể được cấu hình lại
ES5 cho phép thay đổi getter và setter:
// 定义 getter get: function() { return language } // 定义 setter set: function(value) { language = value }
ví dụ này thiết lập language thành chỉ đọc:
Object.defineProperty(person, "language", {writable:false});
ví dụ này làm cho language không thể liệt kê:
Object.defineProperty(person, "language", {enumerable:false});
liệt kê tất cả các thuộc tính
ví dụ này liệt kê tất cả các thuộc tính của đối tượng:
thực thể
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person); // trả về mảng các mảng
liệt kê các thuộc tính có thể liệt kê
ví dụ này chỉ liệt kê các thuộc tính có thể liệt kê của đối tượng:
thực thể
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person); // trả về mảng các thuộc tính có thể liệt kê
thêm thuộc tính
ví dụ này thêm thuộc tính mới vào đối tượng:
thực thể
// 创建对象 const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // 添加属性 Object.defineProperty(person, "year", {value:"2008"});
thêm Getter và Setter
Object.defineProperty()
cách này cũng có thể được sử dụng để thêm Getter và Setter:
thực thể
// 创建对象 const person = {firstName:"Bill", lastName:"Gates"}; // 定义 getter Object.defineProperty(person, "fullName", { get: function () {return this.firstName + " " + this.lastName;} });
một ví dụ về đối tượng đếm
// 定义对象 const obj = {counter:0}; // 定义 setter 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;} }); // Thao tác bộ đếm: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
- Trang trước Giao diện原型 JS
- Trang tiếp theo Định nghĩa hàm JS