JavaScript Object.defineProperty()
- Pesi ya kimwili defineProperties()
- Pesi ya kimare entries()
- Rejea kigezo ganeo Mwongozo wa Mwongozo wa JavaScript
定义和用法
Object.defineProperty()
方法用于添加或修改对象的属性。
Object.defineProperty()
Vifaa vinavyoonesha kubadilisha metadata ya mafanikio.
Object.defineProperty()
Vifaa vinavyoonesha kuingia kwa kufikia getter na setter.
Vifaa vya kusaidia:
Object.defineProperty()
Ongeza au badilisha mafanikio.
Object.defineProperties()
Ongeza au badilisha mafanikio mengi.
Object.getOwnPropertyNames()
Inaruhusu kufikia jina la kila mafanikio cha kifaa.
Object.getOwnPropertyDescriptor()
Inaruhusu kufikia kipendekezo cha mafanikio cha mafanikio.
Object.getOwnPropertyDescriptors()
Inaruhusu kufikia kipendekezo cha mafanikio ya kila kiwango cha kifaa.
Mfano
Mfano 1
Ongeza mafanikio:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // Ongeza mafanikio mpya Object.defineProperty(person, "year", {value:"2008"});
Mfano 2
Badilisha mafanikio:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // 修改一个属性 Object.defineProperty(person, "language", {value:"NO"});
Mfano 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>"; } // Onyesha mafanikio document.getElementById("demo").innerHTML = txt;
Mfano 4
Mfano wa matokeo wa hivyo na kama ya matokeo ya kudumu, lakini inahifadhiwa kwa sababu ya kipaa cha 'language' inaonekana kama kina:
// 创建一个对象 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; } });
Inayotarajiwa
Object.defineProperty(object, property, descriptor)
Mambo
Mambo | Maelezo |
---|---|
object | Inayotarajiwa. Mfano wa hisia. |
property | Inayotarajiwa. Jina la hisia. |
descriptor |
Inayotarajiwa. Kufikia au kusasirisha kufikia kufikia kufikia maelezo ya hisia ya kufikia:
|
Maadili
Aina | Maelezo |
---|---|
Object | Mwongozo wa mafuta ya kusasirisha |
Muhimu wa kufikiria kwa vifaa vya kuhifadhi
Object.defineProperty()
Ina hisia za ECMAScript5 (ES5).
Tangani 2013 Julai, kila vifaa vya kuhifadhi vifaa vya mawili vya kisasa vinakubali kamilifu ES5 (JavaScript 2009):
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 23 | IE/Edge 11 | Firefox 21 | Safari 6 | Opera 15 |
Sepeti 2012 | Sepeti 2012 | Aprili 2013 | Julai 2012 | Julai 2013 |
- Pesi ya kimwili defineProperties()
- Pesi ya kimare entries()
- Rejea kigezo ganeo Mwongozo wa Mwongozo wa JavaScript