Коддоо тилиңизде объектти сапка айландыруу кантип болот?
sobes.tech AI
AIден жооп
JavaScript-те объектти жолго айландыру төмөнкүдөй жолдор менен жүргүзүлөт:
-
Жасалма эмес айландыруу: JavaScript автоматтык түрдө объектти жолго айландыруу үчүн жол операторлору же жолду күтүп турган контексттерде (мисалы,
alert(), артка кайтарылган такталары менен жол интерполяциясы ``) колдонулат. Бул учурдаtoString()ыкмасы чакырылат, эгер ал жок болсо же primitive эмес маанини кайтарса, андаvalueOf()чакырылат. -
Ачык айландыруу:
toString()ыкмасы: объекттин жолдук көрсөтмөсүн алуу үчүн чакырылат.String()функциясы: маанини ачык түрдө жолго айландыруу.- Бош жол менен кошуу оператору (
"" + объект): ошондой эле жасалма эмес айландырууну баштайт.
Объектти жолго айландырууда стандарттык чакыруулардын тартиби: toString() -> valueOf(). Эгер toString() primitive маанини кайтарса, ал колдонулат. Эч болбосо, же toString() жок болсо, valueOf() чакырылат. Эгер дагы valueOf() primitive эмес маанини кайтарса, анда TypeError ката чыгат.
// Өзүнчө `toString` жана `valueOf` ыкмалары бар объект
const myObject = {
name: 'test',
value: 123,
toString: function() {
return `Object(${this.name})`;
},
valueOf: function() {
return this.value;
}
};
// Жасалма эмес айландыруу (`toString` чакырылат)
console.log(`Объект катары жол: ${myObject}`); // Натыйжа: Объект катары жол: Object(test)
// `String()` аркылуу ачык айландыруу (чакырылат `toString`)
console.log(String(myObject)); // Натыйжа: Object(test)
// `toString()` аркылуу ачык айландыруу
console.log(myObject.toString()); // Натыйжа: Object(test)
// `valueOf` чакырылган учур
const anotherObject = {
value: 456,
valueOf: function() {
return this.value;
}
};
console.log(String(anotherObject)); // Натыйжа: 456 (эч кандай primitive кайтаргандыктан)
// Стандарттык объект, кайра аны өзгөртпөгөн
const standardObject = {};
console.log(String(standardObject)); // Натыйжа: [object Object]
JSON.stringify() объекттерди JSON жолго айландыруу үчүн колдонулат, ал өзүнүн эрежелери менен иштейт, toString() жана valueOf() ыкмаларын эске албайт жана тек гана тизмеленген мүнөздөмөлөрдү сериализациялайт.