Страницы

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

пятница, 19 октября 2018 г.

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

Доброго времени суток.
Есть конструктор. Нужно, чтобы экземпляр от него возвращал инкремент. Как это можно и лучше реализовать?
'use strict'
function Count() {
// Здесь правильный код
}
var newCount = new Count();
alert(newCount); // 1
alert(newCount); // 2
alert(newCount + newCount); // 7


Ответ

Конструктор не может возвращать примитивные типы. Поэтому формально ответ на вопрос: никак.
Но можно воспользоваться возможностью определения для объектов функций 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

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

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