Когда я console.log()
использую объект в своей программе на JavaScript, я просто вижу результат [object Object]
, что не очень помогает понять, что это за объект (или даже тип объекта).
В C # я привык к переопределению, ToString()
чтобы иметь возможность настраивать представление объекта отладчиком. Могу ли я сделать что-нибудь подобное в JavaScript?
javascript
debugging
tostring
devios1
источник
источник
typeof
).Ответы:
Вы также можете переопределить
toString
в Javascript. См. Пример:См. Это обсуждение о том, как определить имя типа объекта в JavaScript.
источник
toString
свойство прототипа , ноObject.prototype.toString.call(f)
все равно будет отображаться[object Object]
.Первое переопределение
toString
для вашего объекта или прототипа:Затем преобразуйте его в строку, чтобы увидеть строковое представление объекта:
Если вам не нравится дополнительный набор текста, вы можете создать функцию, которая записывает строковые представления своих аргументов в консоль:
Использование:
Обновить
E2015 предоставляет гораздо более приятный синтаксис для этого материала, но вам придется использовать транспилятор, например Babel :
источник
Простой способ получить отлаживаемый вывод в браузере JS - просто сериализовать объект в JSON. Чтобы вы могли позвонить, как
Так, например,
alert("Blah! " + JSON.stringify({key: "value"}));
выдает предупреждение с текстомBlah! {"key":"value"}
источник
Если вы используете Node, возможно, стоит подумать
util.inspect
.Это даст:
Пока версия без осмотра печатает:
источник
Просто переопределите
toString()
метод.Простой пример:
Еще лучше, когда вы определяете новый тип:
источник
v0.10.*
или ChromeVersion 32.0.1700.102
. При прямом вызове toString (lame) или использовании принуждения типа (lamer) с этим будет работать, консоль [/ info | log /] использует старый pre-mod toString.Если объект определяется вами, вы всегда можете добавить переопределение toString.
источник
С шаблонными литералами :
источник
Добавьте свойство Symbol.toStringTag к настраиваемому объекту или классу.
Строковое значение, которое ему присвоено, будет его строковым описанием по умолчанию, потому что к нему внутренне обращается
Object.prototype.toString()
метод .Например:
Показать фрагмент кода
Некоторые типы Javascript, такие как Карты и Обещания, имеют встроенный
toStringTag
символ.Поскольку
Symbol.toStringTag
это хорошо известный символ , мы можем ссылаться на него и убедиться, что указанные выше типы действительно имеют свойство Symbol.toStringTag -источник
toString()
прямым переопределением единственным способом достижения целиfunction MyObj() {} Object.prototype.toString.call(new MyObj()) // "[object MyObj]"
?Журнал консоли Chrome позволяет вам осматривать объект.
источник
console.log("this is my object:", obj)
.-Эта операция занимает много времени, и ее использование не рекомендуется в соответствии с документами mozilla: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto
-По-видимому, современные браузеры устарели .prototype, а ECMA6 указывает вместо этого использование правильного__proto__.
Так, например, если вы определяете вас собственный объект GeoPosition вы должны вызвать __proto__ свойство вместо .prototype :
источник
Вот пример того, как преобразовать объект Map в строку:
источник
Вы можете предоставить любым настраиваемым объектам их собственные методы toString или написать общий метод, который вы можете вызывать для объекта, на который вы смотрите -
источник
Вместо переопределения
toString()
, если вы включите библиотеку Prototype JavaScript Library , вы можете использовать ееObject.inspect()
для получения гораздо более полезного представления.В большинстве популярных фреймворков есть нечто подобное.
источник
Вы можете расширить или переопределить в JS
источник
источник