ToStringni lug'atga qo'shing
Har qanday key/value
juftligini saqlash uchun Object.create(null)
shaklida yaratilgan lug'at
obyekti mavjud.
Unga dictionary.toString()
usulini qo’shing, bu kalitlarni vergul bilan ajratilgan ro’yxatini qaytarishi kerak. Sizning toString
obyekt uchun for..in
ko’rinishida bo’lmasligi kerak.
Bu shunday ishlashi kerak:
let dictionary = Object.create(null);
// dictionary.toString usulini qo'shish uchun sizning kodingiz
// ba'zi ma'lumotlarni qo'shing
dictionary.apple = "Apple";
dictionary.__proto__ = "test"; // __proto__ bu yerda odatiy xususiyat kalitidir
// faqat apple va __proto__ tsiklda
for(let key in dictionary) {
alert(key); // "apple", so'ng "__proto__"
}
// sizning toString amalda
alert(dictionary); // "apple,__proto__"
Usul Object.keys
yordamida barcha ro’yxatga olinadigan kalitlarni olishi va ularning ro’yxatini chiqarishi mumkin.
toString
ni sanoqsiz qilish uchun, uni xususiyat tavsiflovchisi yordamida aniqlaymiz. Object.create
sintaksisi bizni obyektni ikkinchi argument sifatida xususiyat tavsiflovchilari bilan ta’minlashga imkon beradi.
let dictionary = Object.create(null, {
toString: { // toString xususiyatini aniqlang
value() { // qiymati funktsiya
return Object.keys(this).join();
}
}
});
dictionary.apple = "Apple";
dictionary.__proto__ = "test";
// apple va __proto__ tsiklda
for(let key in dictionary) {
alert(key); // "apple", so'ng "__proto__"
}
// toString tomonidan vergul bilan ajratilgan xususiyatlar ro'yxati
alert(dictionary); // "apple,__proto__"
Agar xususiyatni deskriptor yordamida yaratadigan bo’lsak, uning bayroqlari sukut bo’yicha false
bo’ladi. Shunday qilib, yuqoridagi kodda dictionary.toString
ni sanab bo’lmaydi.
Ko’rib chiqish uchun Xususiyat bayroqlari va tavsiflovchilar bo’limiga qarang.