Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Практика: Функция конструктор и геттер. (https://javascript.ru/forum/misc/39649-praktika-funkciya-konstruktor-i-getter.html)

Magneto 07.07.2013 13:28

Практика: Функция конструктор и геттер.
 
Недавно просматривая вакансии от компании Яндекс, встретил следующую задачу:

Реализуйте конструктор RandomNumber, экземпляры которого при каждом обращении будут возвращать случайное число от 0 до 100. Пример:
var random = new RandomNumber();

alert(random); // 46
alert(random); // 87
alert('First value: ' + random + ', second value: ' + random); // First value: 64, second value: 5


Первое что пришло в голову это использовать Геттеры при создании объекта:

var
    o = {
      get random () { return Math.round( Math.random() * 100 ) }
    };

alert( o.random );
alert( o.random );
alert( 'First value: ' + o.random + ', second value: ' + o.random );


Как видно это решение не совсем соответствует требованию задачи.

Но как сделать чтоб функция конструктор возвращала непосредственно Геттер?

Возможно что я изначально не правильно подошел к решению этой задачи.

P.S. Да простят меня Боги ребята которые придумывают эти задания, за то что я вынес их во всеобщее обсуждение.

nerv_ 07.07.2013 13:40

Цитата:

Сообщение от Magneto
Но как сделать чтоб функция конструктор возвращала непосредственно Геттер?

во-первых, http://learn.javascript.ru/descripto...-сеттер
во-вторых: toString()
в-третьих: valueOf()

function Foo() {}
	
Foo.prototype.valueOf = Foo.prototype.toString = function() {
    return Math.random();
};
      
var obj = new Foo();
var x = obj;      

alert( obj );
alert( x );

Magneto 07.07.2013 14:01

Все ясно, спасибо.


Часовой пояс GMT +3, время: 17:15.