Đối tượng JavaScript.defineProperty()
Ví dụ
Thêm một thuộc tính:
// Create an Object:
const person = {
firstName: "John",
lastName: "Doe",
language: "EN"
};
// Add a new Property
Object.defineProperty(person, "year", {value:"2008"})
Hãy tự mình thử »Thay đổi một thuộc tính:
// Create an object:
const person = {
firstName: "John",
lastName: "Doe",
language: "EN"
};
// Change a property
Object.defineProperty(person, "language", {value:"NO"})
Hãy tự mình thử »Thêm ví dụ dưới đây!
Sự miêu tả
Phương thức Object.defineProperty()
thêm hoặc thay đổi một thuộc tính đối tượng.
Phương thức Object.defineProperty()
cho phép bạn thay đổi siêu dữ liệu thuộc tính.
Phương thức Object.defineProperty()
cho phép bạn thêm getters và setters.
Xem thêm ví dụ bên dưới.
Các phương pháp liên quan:
Object.defineProperty() thêm hoặc thay đổi một thuộc tính.
Object.defineProperties() thêm hoặc thay đổi nhiều thuộc tính.
Object.getOwnPropertyNames() trả về tên thuộc tính của một đối tượng.
Object.getOwnPropertyDescriptor() trả về bộ mô tả của một thuộc tính.
Object.getOwnPropertyDescriptors() trả về bộ mô tả của tất cả các thuộc tính.
Cú pháp
Object.defineProperty( object, property, descriptor )
Thông số
Parameter | Description |
object | Required. The object. |
object | Required. The property name. |
descriptor | Required. A descriptor of the property to be added or changed: value: value writable : true|false enumerable : true|false configurable : true|false get : function set : function |
Giá trị trả về
Kiểu | Sự miêu tả |
Sự vật | Đối tượng được thông qua với những thay đổi được thực hiện. |
Thêm ví dụ
Ví dụ
// Create an Object:
const person = {
firstName:
"John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty (person, "language", {
value: "EN",
writable : true,
enumerable : true,
configurable : true
});
//
Enumerate Properties
let txt = "";
for (let x in person) {
txt += person[x] + "<br>";
}
// Display Properties
document.getElementById("demo").innerHTML =
txt;
Hãy tự mình thử »Ví dụ tiếp theo cũng có mã tương tự, ngoại trừ nó ẩn thuộc tính ngôn ngữ khỏi bảng liệt kê:
Ví dụ
// Create an Object:
const person = {
firstName:
"John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty (person, "language", {
value: "EN",
writable : true,
enumerable : false,
configurable : true
});
//
Enumerate Properties
let txt = "";
for (let x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML =
txt;
Hãy tự mình thử »Người định cư và người Getters
Ví dụ này tạo một setter và getter để bảo mật các cập nhật ngôn ngữ viết hoa:
Ví dụ
// Create an Object:
const person = {
firstName: "John",
lastName : "Doe",
language : "NO"
};
// Change a Property:
Object.defineProperty (person, "language", {
get : function() { return
language },
set : function(value) { language = value.toUpperCase()}
});
// Change Language
person.language = "en";
// Display Language
document.getElementById("demo").innerHTML = person.language;
Hãy tự mình thử »Ví dụ này sử dụng một getter để nối tên và họ:
Ví dụ
// Create an Object:
const person = {
firstName: "John",
lastName : "Doe"
};
// Define a Getter
Object.defineProperty(person, "fullName", {
get: function () {return this.firstName + " " + this.lastName;}
});
Hãy tự mình thử »Getters và Setters JavaScript hoàn hảo để tạo bộ đếm:
Ví dụ
// Define Setters and Getters
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 (value) {this.counter -= value;}
});
Hãy tự mình thử »Hỗ trợ trình duyệt
Object.defineProperty()
là một tính năng ECMAScript5 (ES5).
ES5 (JavaScript 2009) được hỗ trợ đầy đủ trong tất cả các trình duyệt hiện đại kể từ tháng 7 năm 2013:
Chrome 23 |
IE/Edge 11 |
Firefox 21 |
Safari 6 |
Opera 15 |
Sep 2012 | Sep 2012 | Apr 2013 | Jul 2012 | Jul 2013 |