Object.prototype.toString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод toString() возвÑаÑÐ°ÐµÑ ÑÑÑокÑ, пÑедÑÑавлÑÑÑÑÑ Ð¾Ð±ÑекÑ.
ÐнÑеÑакÑивнÑй пÑимеÑ
function Dog(name) {
this.name = name;
}
const dog1 = new Dog("Gabby");
Dog.prototype.toString = function dogToString() {
return `${this.name}`;
};
console.log(dog1.toString());
// Expected output: "Gabby"
СинÑакÑиÑ
obj.toString()
ÐозвÑаÑаемое знаÑение
СÑÑока, пÑедÑÑавлÑÑÑÐ°Ñ Ð¾Ð±ÑекÑ.
ÐпиÑание
ÐаждÑй обÑÐµÐºÑ Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑод toString(), авÑомаÑиÑеÑки вÑзÑваÑÑийÑÑ, когда обÑÐµÐºÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿ÑедÑÑавлен в виде ÑекÑÑового знаÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ когда обÑÐµÐºÑ ÑÑаÑÑвÑÐµÑ Ð² вÑÑажении, где ожидаеÑÑÑ ÑÑÑока. Ðо ÑмолÑаниÑ, меÑод toString() наÑледÑеÑÑÑ ÐºÐ°Ð¶Ð´Ñм обÑекÑом, пÑоизоÑедÑим Ð¾Ñ Ð¾Ð±ÑекÑа Object. ÐÑли ÑÑÐ¾Ñ Ð¼ÐµÑод не пеÑеопÑеделÑн в полÑзоваÑелÑÑком обÑекÑе, toString() возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð²Ð¸Ð´Ð° "[object Ñип]", где Ñип â ÑÑо Ñип обÑекÑа. ÐÑо иллÑÑÑÑиÑÑÐµÑ ÑледÑÑÑий код:
var o = new Object();
o.toString(); // веÑнÑÑ [object Object]
ÐÑимеÑание:
ÐаÑÐ¸Ð½Ð°Ñ Ñ JavaScript 1.8.5, меÑод toString(), вÑзваннÑй на null, возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ [object Null], а вÑзваннÑй Ð´Ð»Ñ undefined, возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ [object Undefined], как опÑеделено в 5-м издании ECMAScript и поÑледÑÑÑиÑ
иÑпÑавлениÑÑ
. СмоÑÑиÑе пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзование меÑода toString() Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñипа обÑекÑа.
ÐÑимеÑÑ
>ÐÑимеÑ: пеÑеопÑеделение меÑода toString по ÑмолÑаниÑ
ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑзÑваÑÑÑÑ Ð²Ð¼ÐµÑÑо меÑода toString() по ÑмолÑаниÑ. ÐеÑод toString() не пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð°ÑгÑменÑов и должен возвÑаÑаÑÑ ÑÑÑокÑ. СоздаваемÑй вами меÑод toString() Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð»ÑбÑÑ ÑÑÑокÑ, какÑÑ Ð²Ñ Ð·Ð°Ñ
оÑиÑе, но он бÑÐ´ÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ полезнÑм, еÑли бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± обÑекÑе.
СледÑÑÑий код опÑеделÑÐµÑ Ð¾Ð±ÑÐµÐºÑ Dog и ÑоздаÑÑ theDog, обÑÐµÐºÑ Ñипа Dog:
function Dog(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
theDog = new Dog("ÐолÑÑÑка", "лабÑадоÑ", "ÑоколаднÑй", "девоÑка");
ÐÑли Ð²Ñ Ð²ÑзовеÑе меÑод toString() на ÑÑом полÑзоваÑелÑÑком обÑекÑе, он веÑнÑÑ Ð·Ð½Ð°Ñение по ÑмолÑаниÑ, ÑнаÑледованное Ð¾Ñ Object:
theDog.toString(); // веÑнÑÑ [object Object]
СледÑÑÑий код ÑоздаÑÑ Ð¸ пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð¼ÐµÑод dogToString(), пеÑеопÑеделÑÑÑий меÑод toString() по ÑмолÑаниÑ. ÐÑа ÑÑнкÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ ÑÑÑокÑ, ÑодеÑжаÑÑÑ ÐºÐ»Ð¸ÑкÑ, поÑодÑ, ÑÐ²ÐµÑ Ð¸ пол обÑекÑа, в ÑоÑме "ÑвойÑÑво = знаÑение;".
Dog.prototype.toString = function dogToString() {
var ret =
"СобаÑка " +
this.name +
" - " +
this.sex +
", " +
this.color +
" " +
this.breed;
return ret;
};
или
Dog.prototype.toString = function dogToString() {
return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
};
ÐоÑле обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÑого меÑода, пÑи лÑбом иÑполÑзовании пеÑеменной theDog в ÑÑÑоковом конÑекÑÑе, JavaScript бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑзÑваÑÑ ÑÑнкÑÐ¸Ñ dogToString(), возвÑаÑаÑÑÑÑ ÑледÑÑÑÑÑ ÑÑÑокÑ:
СобаÑка ÐолÑÑÑка - девоÑка, ÑоколаднÑй лабÑадоÑ
ÐÑимеÑ: иÑполÑзование меÑода toString Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñипа обÑекÑа
ÐеÑод toString() можно иÑполÑзоваÑÑ Ñ Ð»ÑбÑм обÑекÑом Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ клаÑÑа. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑода Object.prototype.toString() Ñ Ð»ÑбÑм обÑекÑом, вам необÑ
одимо вÑзваÑÑ Ð½Ð° нÑм ÑÑнкÑии Function.prototype.call() или Function.prototype.apply(), пеÑедав обÑекÑ, коÑоÑÑй Ð²Ñ Ñ
оÑиÑе иÑÑледоваÑÑ, пеÑвÑм паÑамеÑÑом thisArg.
var toString = Object.prototype.toString;
toString.call(new Date()); // [object Date]
toString.call(new String()); // [object String]
toString.call(Math); // [object Math]
// ÐаÑÐ¸Ð½Ð°Ñ Ñ JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-object.prototype.tostring > |