𝗖𝗢𝗢𝗟𝗬 𝗖𝗢𝗗𝗘 | کولی کد
#javascript #js_trick #object * متد Object.defineProperty در جاوااسکریپت چیست ؟ * #part2 توی پارت قبلی به معرفی متد Object.defineProperty پرداختیم و ویژگی های کلیدی و ارگومان های مختلف این متد رو بررسی کردیم : obj | prop | descriptor و متوجه شدیم که با…
#javascript #js_trick #object
* متد Object.defineProperty در جاوااسکریپت چیست ؟ *
#part3
توی پارت های قبلی ( یک و دو ) به معرفی متد Object.defineProperty پرداختیم و ویژگی های کلیدی و ارگومان های مختلف این متد رو بررسی کردیم.
حالا توی این پست قراره که پروپرتی های get و set که متعلق به آرگومان descriptor هستند رو باهم بررسی کنیم.
❓ مفهوم getter چیست ؟
گِتِر تابعی است که هر زمان به مقدار یک ویژگی دسترسی پیدا میکنید، فراخوانی میشود.
به جای بازگرداندن مقدار مستقیم ویژگی، getter میتواند یک محاسبه انجام دهد یا مقدار را از منبع دیگری دریافت کند.
❔ مفهوم setter چیست ؟
سِتِر تابعی است که هر زمان مقداری به یک ویژگی نسبت داده میشود، فراخوانی میشود.
به جای جایگزینی مستقیم مقدار ویژگی، setter میتواند مقدار جدید را تغییر دهد یا قبل از ذخیره سازی آن، یک عملیات اعتبارسنجی انجام دهد.
بریم تو مثال عملی ببینیم چیکار میکنند 🚀
const obj = {};
let value = 0;
Object.defineProperty(obj, 'prop', {
get() {
return value;
},
set(newValue) {
value = newValue + 1;
},
configurable: true,
enumerable: true
});
obj.prop = 10;
console.log(obj.prop);
set :
وقتی obj.prop = 10 را مینویسیم، در واقع setter فراخوانی میشود و مقدار value به ۱۱ تغییر میکند.
get :
وقتی console.log(obj.prop) را مینویسیم، در واقع getter فراخوانی میشود و مقدار فعلی value که ۱۱ است در خروجی چاپ خواهد شد.
کاربردهای عملی set و get ✅
1 محاسبه مقادیر : میتوانید از getter برای محاسبه مقادیر بر اساس مقادیر دیگر استفاده کنید. 👇
const person = {
firstName: "ali",
lastName: "ahmadi"
};
Object.defineProperty(person, 'fullName', {
get() {
return ${this.firstName} ${this.lastName}.toUpperCase();
}
});
console.log(person.fullName);
خروجی :
ALI AHMADI
2 اعتبارسنجی دادهها : میتوانید از setter برای اطمینان از اینکه مقادیر ورودی معتبر هستند، استفاده کنید. 👇
const person = {};
Object.defineProperty(person, 'age', {
get() {
return this._age;
},
set(newAge) {
if (newAge < 0) {
throw new Error('سن نمیتواند منفی باشد.');
}
this._age = newAge;
}
});
person.age = 30;
console.log(person.age); // خروجی: 30
try {
person.age = -5;
} catch (error) {
console.error(error.message); // خروجی: سن نمیتواند منفی باشد.
}
و این هم از پارت آخر متد Object.defineProperty
یک مقدار طولانی شد به این دلیل که دوسداشتم این متد رو به خوبی درک کنید ⚡❤️
Channel | YouTube | Instagram
🔥2🖕1