toString را به فرهنگ لغت اضافه کنید
یک شیء dictionary
وجود دارد که به عنوان Object.create(null)
ایجاد شده است تا هر جفت key/value
را ذخیره کند.
متد dictionary.toString()
را به آن اضافه کنید، که باید فهرستی از کلیدها با کاما را برگرداند. toString
شما نباید در for..in
روی شیء نشان داده شود.
به این صورت باید کار کند:
let dictionary = Object.create(null);
// dictionary.toString کد شما برای افزودن متد
// اضافه کردن مقداری داده
dictionary.apple = "سیب";
dictionary.__proto__ = "تست"; // یک ویژگی معمولی است __proto__ در اینجا
// در حلقه وجود دارند __proto__ تنها سیب و
for(let key in dictionary) {
alert(key); // "__proto__" سپس ،"apple"
}
// شما در عمل toString
alert(dictionary); // "سیب,__proto__"
این روش میتواند همه کلیدهای شمارشپذیر را با استفاده از Object.keys
گرفته و فهرست آنها را خروجی کند.
برای غیرقابل شمارش کردن toString
، بیایید آن را با استفاده از یک توصیفگر مشخص کنیم. سینتکس Object.create
به ما اجازه میدهد تا یک شیء را با توصیفگرهای ویژگی به عنوان آرگومان دوم ارائه کنیم.
let dictionary = Object.create(null, {
toString: { // toString تعریف ویژگی
value() { // مقدار یک تابع است
return Object.keys(this).join();
}
}
});
dictionary.apple = "سیب";
dictionary.__proto__ = "تست";
// در حلقه هستند __proto__ و apple
for(let key in dictionary) {
alert(key); // "__proto__" سپس ،"apple"
}
// toString لیست خصوصیات جدا شده با کاما توسط
alert(dictionary); // "apple,__proto__"
وقتی یک ویژگی را با استفاده از یک توصیفگر ایجاد میکنیم، پرچمهای آن به طور پیشفرض false
هستند. بنابراین در کد بالا، dictionary.toString
غیرقابل شمارش است.
برای یادآوری به فصل پرچمهای ویژگی و توصیفکنندهها مراجعه کنید.