JavaScript Object.defineProperty()
- Forrige side defineProperties()
- Næste side entries()
- Tilbage til forrige niveau JavaScript objekt referencemanual
Definition og brug
Object.defineProperty()
Metoden bruges til at tilføje eller ændre egenskaber på objektet.
Object.defineProperty()
Metoden giver dig mulighed for at ændre egenskabens metadata.
Object.defineProperty()
Metoden tillader dig at tilføje getter og setter.
Relaterede metoder:
Object.defineProperty()
Tilføj eller ændr egenskaber.
Object.defineProperties()
Tilføj eller ændr flere egenskaber.
Object.getOwnPropertyNames()
Returnerer alle egenskabsnavnene på objektet.
Object.getOwnPropertyDescriptor()
Returnerer beskrivelsen af egenskaben.
Object.getOwnPropertyDescriptors()
Returnerer beskrivelsen af alle egenskaberne på objektet.
Eksempel
Eksempel 1
Tilføj egenskab:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // Tilføj en ny egenskab Object.defineProperty(person, "year", {value:"2008"});
Eksempel 2
Ændr egenskab:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // 修改一个属性 Object.defineProperty(person, "language", {value:"NO"});
Eksempel 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>"; } // Vis egenskab document.getElementById("demo").innerHTML = txt;
Eksempel 4
Næste eksempel er det samme som det forrige eksempel kode, men skjuler property-attributten, så den ikke er enumerable:
// 创建一个对象 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; } });
Syntaks
Object.defineProperty(objekt, egenskab, beskrivelse)
parametre
parametre | Beskrivelse |
---|---|
objekt | Obligatorisk. Målobjektet. |
egenskab | Obligatorisk. Egenskabsnavn. |
beskrivelse |
Obligatorisk. At tilføje eller ændre egenskabsbeskrivelsen:
|
Returværdi
Type | Beskrivelse |
---|---|
Object | Ændrede objekter. |
Browserstøtte
Object.defineProperty()
Er en funktion af ECMAScript5 (ES5).
Fra juli 2013 har alle moderne browsere fuldt støtte til 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 |
- Forrige side defineProperties()
- Næste side entries()
- Tilbage til forrige niveau JavaScript objekt referencemanual