Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2015, 11:35
Новичок на форуме
Отправить личное сообщение для bigkrp Посмотреть профиль Найти все сообщения от bigkrp
 
Регистрация: 13.01.2015
Сообщений: 7

Создание идентичных объектов(псевдо)
Здравствуйте, столкнулся с интересной для себя задачей.
Возможно ли выполнить след условия:

var a = new F();
var b = F();

a instanceof F //true(*)
b instanceof F //true(**)

a==b//true (***)

т.е. (*) и (**) я знаю как решить используя такой шаблон
var F = function(){
  if(!(this instanceof F)){
    return new F();
  }
};


а вот с (***) загвоздка. Еще ньюанс, что решение должно быть в теле конструктора F
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2015, 12:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

bigkrp,
два разных обьекта не могут быть равны друг другу -- либо пишите свою функцию сравнения.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2015, 08:41
Новичок на форуме
Отправить личное сообщение для bigkrp Посмотреть профиль Найти все сообщения от bigkrp
 
Регистрация: 13.01.2015
Сообщений: 7

Это я понимаю.
Я думал как-то возвращать ссылку на объект, который будет создан в теле конструктора, но как-то пока не сообразил как это сделать, что бы при этом выполнялись (**) и (*)
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2015, 10:38
Новичок на форуме
Отправить личное сообщение для bigkrp Посмотреть профиль Найти все сообщения от bigkrp
 
Регистрация: 13.01.2015
Сообщений: 7

Нашел решение в книге с Шаблонами, вдруг кому понадобится, мне вот на собеседовании задавали.
Шаблон называется singletone посредством конструктора

function F(){
  var instance;
  
  F = function F(){
    return instance;
  }
  
  F.prototype = this;
  
  instance = new F();
  
  instance.constructor = F; // опционально
  
  return instance;
}

var a = new F();
var b = F();

console.log(a instanceof F); // true
console.log(b instanceof F); // true
console.log(a == b); // true
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание JS конструктора sheckler Работа 2 25.05.2015 21:24
Создание Конструктора sheckler Элементы интерфейса 1 25.05.2015 12:02
Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать? IDCh Javascript под браузер 2 31.10.2012 12:53
Создание скрипта "Итеррационные циклы" по формуле krasopetka Общие вопросы Javascript 0 17.11.2011 12:42
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00