Properties (خواص) در اشیاء JavaScript

Properties (خواص) در اشیاء JavaScript

 

دسترسی به خواص

نحوه ی دسترسی به خواص یک شیء در زبان جاوا اسکریپت به شکل زیر است:

objectName.property             // person.age

یا

objectName[“property”]        // person[“age”]

یا

objectName[expression]       // x = “age”; person[x]

به دو مثال زیر توجه کنید…

مثال شماره یک:

 

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript Object Properties</h2>

<p>There are two different ways to access an object property:</p>

<p>You can use .property or [“property”].</p>

<p id=”demo”></p>

<script> var person = {

firstname:”َAlireza”,

lastname:”Sh”,

age:20,

eyecolor:”brown”

};

document.getElementById(“demo”).innerHTML = person.firstname + ” is ” + person.age + ” years old.”;

</script>

</body>

</html>

مثال شماره دو:

 

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript Object Properties</h2>

<p>You can use .property or [“property”].</p>

<p id=”demo”></p>

<script> var person = {

firstname:”َAlireza”,

lastname:”Sh”,

age:20,

eyecolor:”brown”

};

document.getElementById(“demo”).innerHTML = person[“firstname”] + ” is ” + person[“age”] + ” years old.”;

</script>

</body>

</html>

هر دو روش یک نتیجه را بر میگردانند.

 

استفاده از حلقه ی for…in

حلقه ی for...in در جاوا اسکریپت بین تمام خواص یک شیء گردش می کند و بر اساس کدی که برایش بنویسید عمل خاصی را انجام می دهد. ساختار این حلقه به شکل زیر است:

 

for (variable in object) {

// code to be executed

}

بلوک کدی که داخل حلقه ی for...in قرار بگیرد روی تک تک خصوصیات شیء اجرا می شود.

به مثال زیر توجه کنید:

 

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript Object Properties</h2>

<p id=”demo”></p>

<script> var txt = “”;

var person = {fname:”Alireza”, lname:”Sh”, age:20};

var x;

for (x in person) {

txt += person[x] + ” “;

}

document.getElementById(“demo”).innerHTML = txt;

</script>

</body>

</html>

اضافه کردن خصوصیات جدید

برای اضافه کردن خصوصیات جدید کافی است از همان قانون دسترسی به خصوصیات استفاده کنید.

:مثال

var person = {

firstname:”Alireza”,

lastname:”Sh”,

age:20,

eyecolor:”brown”

};

person.nationality = “Persian”;

document.getElementById(“demo”).innerHTML =

person.firstname + ” is ” + person.nationality + “name.”;

</script>

خروجی این کد عبارت .Alireza is Persian name” خواهد بود.

نکته: شما اجازه ندارید از کلمات رزرو شده برای نام گذاری خصوصیات اشیاء استفاده کنید. قوانین مربوط به نام گذاری متغیر ها در زمینه ی خصوصیات اشیاء نیز صادق هستند.

مثلا کلمه ی function یک کلمه ی رزرو شده است که برای تعریف توابع استفاده می شود. شما نمی توانید نام متغیر های خود را function بگذارید. البته می توانید به آن چیزی اضافه کنید؛ به طور مثال myFucntion کاملا پذیرفته است.

 

abstract arguments await* boolean
break byte case catch
char class* const continue
debugger default delete do
double else enum* eval
export* extends* false final
finally float for function
goto if implements import*
in instanceof int interface
let* long native new
null package private protected
public return short static
super* switch synchronized this
throw throws transient true
try typeof var void
volatile while with yield

لیست کامل کلمات رزرو شده در جاوا اسکریپت

 

کلمات نشان گذاری شده با علامت * در ECMAScript 5 and 6 جدید هستند.

 

حذف خصوصیات

کلیدواژه ی delete می تواند خواص خاصی را از یک شیء حذف کند. به مثال زیر توجه کنید:

 

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript Object Properties</h2>

<p>You can delete object properties.</p>

<p id=”demo”></p> <script> var person = {

firstname:”Alireza”,

lastname:”Sh”,

age:20,

eyecolor:”brown”

};

delete person.age;

document.getElementById(“demo”).innerHTML =

person.firstname + ” is ” + person.age + ” years old.”;

</script>

</body>

</html>

خروجی این کد عبارت “.Alireza is undefined years old” می باشد که یعنی سن و سال Alireza از شیء حذف شده و حالا مقدار undefined را به ما برگردانده است.

 

چند نکته در مورد کلیدواژه ی delete :

  • این کلیدواژه هم خصوصیت را حذف میکند و هم مقدار آن خصوصیت را.
  • پس از استفاده از delete دیگر نمی توان به آن خصوصیت دسترسی داشت مگر آن که دوباره آن را ساخت.
  • این کلیدواژه جهت استفاده بر خصوصیات (property) اشیاء ساخته شده است و روی توابع یا متغیر ها اثری ندارد.
  • نباید از این کلیدواژه روی خصوصیات پیش فرضی استفاده کنید که خود جاوا اسکریپت آن ها را تعریف کرده است. اگر چنین کاری انجام دهید ممکن است برنامه ی شما به طور کلی متوقف شود.

Attribute چیست؟

تمام خصوصیات (propery) دارای یک نام و یک مقدار هستند. حالا این نام، یک attribute (به معنی «ویژگی») برای آن property محسوب می شود. attribute های دیگر شامل enumerable (به معنی قابل شمارش)، configurable (به معنی قابل تنظیم) و writable (به معنی قابل نوشتن) هستند. در واقع کار این attribute ها این است که تعیین کنند یک خصوصیت به چه صورتی قابل دسترس است. به طور مثال آیا قابل خواندن است؟ آیا قابل نوشتن نیز هست؟

 

همچنین دنبال کنید تعریفی از تم دارک (Dark Mode) و نحوه ایجاد آن در Web به کمک JS ، اینجا کلیک کنید…