Как Мр. Блестящие и новые состояния, все объекты JavaScript имеют метод toString
. Однако этот метод не всегда полезен, особенно для пользовательских классов и литералов объектов, которые, как правило, возвращают строки типа "[Object object]"
.
Вы можете создать свои собственные toString
методы, добавив функцию с таким именем в прототип вашего класса, например:
function List(val, list) {
this.val = val;
this.list = list;
// ...
}
List.prototype = {
toString: function() {
return "newList(" + this.val + ", " + this.list + ")";
}
};
Теперь, если вы создаете new List(...)
и вызываете его метод toString
(или запускаете его через любую функцию или оператор, который неявно преобразует его в строку), будет использоваться ваш пользовательский метод toString
.
Наконец, чтобы определить, есть ли у объекта метод toString
, определенный для его класса (обратите внимание, что не будет работать с подклассами или литералами объектов; это оставлено в качестве упражнения для читателя), вы можете получить доступ к его constructor
's prototype
свойству:
if (value.constructor.prototype.hasOwnProperty("toString")) {
alert("Value has a custom toString!");
}