JavaScript Object.defineProperty()
- صفحه قبلی defineProperties()
- صفحه بعدی entries()
- به لایه بالاتر بازگردید دستورالعمل مرجع JavaScript
تعریف و استفاده
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
Getter و Setter در JavaScript برای ایجاد شمارنده بسیار مناسب هستند:
// تعریف 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()
- به لایه بالاتر بازگردید دستورالعمل مرجع JavaScript