بازگشت به درس

toString را به فرهنگ لغت اضافه کنید

اهمیت: 5

یک شیء 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 غیرقابل شمارش است.

برای یادآوری به فصل پرچم‌های ویژگی و توصیف‌کننده‌ها مراجعه کنید.