تمام عملگرها در نهایت روی یک یا چند عبارت پایه عمل میکنند. این عبارتهای پایه شامل شناسهها (Identifiers) و مقادیر ثابت (Literals) هستند، اما چند نوع دیگر نیز وجود دارد که در ادامه به طور خلاصه معرفی میشوند:
thisکلمه کلیدی this معمولاً درون یک تابع استفاده میشود. به طور کلی، وقتی یک تابع به عنوان یک متد به یک شیء متصل میشود، this به همان شیئی اشاره میکند که متد روی آن صدا زده شده است. این کلمه کلیدی شبیه به یک پارامتر پنهان عمل میکند که به تابع پاس داده میشود. از آنجا که this عبارتی است که به یک شیء ارزیابی میشود، میتوانید تمام عملیاتهای مربوط به اشیاء را روی آن پیاده کنید:
this["propertyName"];
this.propertyName;
doSomething(this);
برای مثال، فرض کنید تابعی به این صورت تعریف شده است:
function getFullName() {
return `${this.firstName} ${this.lastName}`;
}
حالا میتوانیم این تابع را به اشیاء مختلف متصل کنیم تا هنگام اجرا، از ویژگیهای همان شیء استفاده کند:
const person1 = {
firstName: "Chris",
lastName: "Martin",
};
const person2 = {
firstName: "Chester",
lastName: "Bennington",
};
// متصل کردن یک تابع یکسان به هر دو شیء
person1.getFullName = getFullName;
person2.getFullName = getFullName;
console.log(person1.getFullName()); // خروجی: "Chris Martin"
console.log(person2.getFullName()); // خروجی: "Chester Bennington"
عملگر گروهبندی یا همان پرانتز ( )، اولویت ارزیابی را در عبارتها کنترل میکند. به عنوان مثال، شما میتوانید اولویت پیشفرض (که ابتدا ضرب و تقسیم و سپس جمع و تفریق است) را تغییر دهید تا عمل جمع زودتر انجام شود:
const a = 1;
const b = 2;
const c = 3;
// اولویت پیشفرض
a + b * c; // ۷
// به صورت پیشفرض اینگونه ارزیابی میشود
a + (b * c); // ۷
// حالا اولویت را تغییر میدهیم تا جمع قبل از ضرب انجام شود
(a + b) * c; // ۹
// که معادل است با:
a * c + b * c; // ۹
ساختار دسترسی به ویژگیها، مقادیرِ ویژگیهای یک شیء را با استفاده از نحو نقطهای (Dot notation) یا نحو کروشهای (Bracket notation) دریافت میکند:
object.property;
object["property"];
ساختار زنجیرهسازی اختیاری (?.) عملیات زنجیرهای را روی یک شیء تنها در صورتی انجام میدهد که آن شیء تعریفشده و غیرِ نال (non-null) باشد؛ در غیر این صورت، عملیات را متوقف (اتصال کوتاه) کرده و مقدار undefined را برمیگرداند. این قابلیت به شما اجازه میدهد تا بدون ایجاد خطای TypeError، روی مقادیری که ممکن است null یا undefined باشند عملیات انجام دهید:
maybeObject?.property;
maybeObject?.[property];
maybeFunction?.();
new)شما میتوانید از عملگر new برای ایجاد یک نمونه (Instance) از یک نوع شیء تعریفشده توسط کاربر یا یکی از انواع اشیاء پیش-ساختهی جاوااسکریپت استفاده کنید. نحوه استفاده از آن به این صورت است:
const objectName = new ObjectType(param1, param2, /* …, */ paramN);
superکلمه کلیدی super برای صدا زدن توابع موجود در شیء والد (پدر) استفاده میشود. این کلمه کلیدی در کلاسها برای صدا زدن سازندهی والد (Parent constructor) بسیار کاربردی است:
super(args); // سازنده کلاس والد را صدا میزند
super.functionOnParent(args); // یک متد خاص را از کلاس والد صدا میزند
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript