JavaScript Object.defineProperty()
- الصفحة السابقة defineProperties()
- الصفحة التالية entries()
- العودة إلى الطبقة العليا دليل مرجعي لجافا سكريبت
التعريف والاستخدام
Object.defineProperty()
الطريقة تستخدم لإضافة أو تعديل خاصيات العنصر.
Object.defineProperty()
الطريقة تسمح بتعديل معلومات الخاصية.
Object.defineProperty()
الطريقة تسمح بإضافة getter و setter.
الطرق ذات الصلة:
Object.defineProperty()
إضافة أو تعديل خاصية.
Object.defineProperties()
إضافة أو تعديل عدة خاصيات.
Object.getOwnPropertyNames()
يعود بكافة أسماء الخاصيات في العنصر.
Object.getOwnPropertyDescriptor()
يعود بكافة وصفات الخاصية.
Object.getOwnPropertyDescriptors()
يعود بكافة وصفات العناصر في العنصر.
المثال
مثال 1
إضافة الخاصية:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // إضافة خاصية جديدة Object.defineProperty(person, "year", {value:"2008"});
مثال 2
تعديل الخاصية:
// 创建一个对象 const person = { firstName: "Bill", lastName: "Gates" language: "EN" }; // 修改一个属性 Object.defineProperty(person, "language", {value:"NO"});
مثال 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>"; } // عرض الخاصية document.getElementById("demo").innerHTML = txt;
مثال 4
النموذج التالي مشابه للنموذج السابق من حيث الكود، لكن تم إخفاء خاصية language، مما يجعلها غير قابلة للتحديد:
// 创建一个对象 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; } });
النصب
Object.defineProperty(object, property, descriptor)
المواضيع
المواضيع | الوصف |
---|---|
object | مطلوب. العنصر الهدف. |
property | مطلوب. اسم الخاصية. |
descriptor |
مطلوب. لإنشاء أو تعديل وصف خاصية:
|
القيمة المعدلة
النوع | الوصف |
---|---|
Object | الهدف المعدل للعنصر. |
دعم المتصفحات
Object.defineProperty()
هي خصائص ECMAScript5 (ES5).
من يوليو 2013، يدعم جميع المتصفحات الحديثة ES5 (JavaScript 2009) بشكل كامل:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 23 | IE/Edge 11 | Firefox 21 | Safari 6 | Opera 15 |
سبتمبر 2012 | سبتمبر 2012 | أبريل 2013 | يوليو 2012 | يوليو 2013 |
- الصفحة السابقة defineProperties()
- الصفحة التالية entries()
- العودة إلى الطبقة العليا دليل مرجعي لجافا سكريبت