JavaScript Object.defineProperty()
- Halaman Sebelumnya defineProperties()
- Halaman Berikutnya entries()
- Kembali ke Timpang Atas Panduan Referensi Objek JavaScript
Definisi dan penggunaan
Object.defineProperty()
Metode digunakan untuk menambahkan atau mengubah attribute objek.
Object.defineProperty()
Metode memungkinkan Anda mengubah metadata attribute.
Object.defineProperty()
Metode memungkinkan Anda menambahkan getter dan setter.
Metode terkait:
Object.defineProperty()
Menambahkan atau mengubah attribute.
Object.defineProperties()
Menambahkan atau mengubah beberapa attribute.
Object.getOwnPropertyNames()
Mengembalikan semua nama attribute objek.
Object.getOwnPropertyDescriptor()
Mengembalikan deskripsi attribute.
Object.getOwnPropertyDescriptors()
Mengembalikan deskripsi dari semua attribute objek.
Instance
Contoh 1
Menambahkan attribute:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // Menambahkan attribute baru Object.defineProperty(person, "year", {value:"2008"});
Contoh 2
Ubah attribute:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // 修改一个属性 Object.defineProperty(person, "language", {value:"NO"});
Contoh 3
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // 修改一个属性 Object.defineProperty(person, "language", { value: "EN" writable: true, enumerable: true, configurable: true }); // 枚举属性 let txt = ""; for (let x in person) { txt += person[x] + "<br>"; } // Menampilkan attribute document.getElementById("demo").innerHTML = txt;
Contoh 4
Contoh berikutnya sama seperti contoh sebelumnya, tetapi attribute language tersembunyi, sehingga tidak dapat diekspor:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // 修改一个属性 Object.defineProperty(person, "language", { value: "EN" writable: true, enumerable: false, configurable: true }); // 枚举属性 let txt = ""; for (let x in person) { txt += person[x] + "<br>"; } document.getElementById("demo").innerHTML = txt;
例子 5
此例创建了一个 setter 和 getter,以确保 language 属性的更新为大写:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "NO" }; // 修改一个属性 Object.defineProperty(person, "language", { get: function() { return language }, set: function(value) { language = value.toUpperCase() } }); // 修改 language person.language = "en"; // 显示 language document.getElementById("demo").innerHTML = person.language;
例子 6
此例使用 getter 将 firstName 和 lastName 连接起来:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" }; // 定义一个 Getter Object.defineProperty(person, "fullName", { get: function () { return this.firstName + " " + this.lastName; } });
例子 7
JavaScript 的 Getter 和 Setter 非常适合创建计数器:
// 定义 Setter 和 Getter 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; } });
Sintaks
Object.defineProperty(object, property, descriptor)
parameter
parameter | Deskripsi |
---|---|
object | Diperlukan. Objek target. |
property | Diperlukan. Nama properti. |
descriptor |
Diperlukan. Untuk menambahkan atau mengubah deskripsi properti:
|
Nilai Kembalian
Tipe | Deskripsi |
---|---|
Object | Objek yang diubah. |
Dukungan Peramban
Object.defineProperty()
Adalah fitur ECMAScript5 (ES5).
Dari Juli 2013, semua peramban modern sepenuhnya mendukung ES5 (JavaScript 2009):
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 23 | IE/Edge 11 | Firefox 21 | Safari 6 | Opera 15 |
September 2012 | September 2012 | April 2013 | Juli 2012 | Juli 2013 |
- Halaman Sebelumnya defineProperties()
- Halaman Berikutnya entries()
- Kembali ke Timpang Atas Panduan Referensi Objek JavaScript