Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2013, 12:28
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

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

Реализуйте конструктор 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. Да простят меня Боги ребята которые придумывают эти задания, за то что я вынес их во всеобщее обсуждение.
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2013, 12:40
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от 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 );
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 07.07.2013 в 12:44.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2013, 13:01
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Все ясно, спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает функция unserialize zebulun Общие вопросы Javascript 3 28.12.2012 15:47
Как узнать где находится функция, на которую указывает javascript:openTag('mgmt') amigo* Общие вопросы Javascript 13 11.04.2012 11:11
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 21:49
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 18:00
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 12:47