Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Как сделать так, чтобы экземпляр конструктора возвращал примитивный тип?

#javascript


Доброго времени суток.

Есть конструктор. Нужно, чтобы экземпляр от него возвращал инкремент.
Как это можно и лучше реализовать?

'use strict'

function Count() {

  // Здесь правильный код

}

var newCount = new Count();

alert(newCount); // 1 

alert(newCount); // 2 

alert(newCount + newCount); // 7

    


Ответы

Ответ 1



Конструктор не может возвращать примитивные типы. Поэтому формально ответ на вопрос: никак. Но можно воспользоваться возможностью определения для объектов функций toString и valueOf, которые вызываются автоматически при приведениях к различным типам, например: function Count() { var val = 0; this.valueOf = this.toString = function() { return ++val; }; } var newCount = new Count(); document.write(newCount); // 1 document.write(newCount); // 2 document.write(newCount + newCount); // 7

Комментариев нет:

Отправить комментарий