Создание идентичных объектов(псевдо)
Здравствуйте, столкнулся с интересной для себя задачей.
Возможно ли выполнить след условия: 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 |
bigkrp,
два разных обьекта не могут быть равны друг другу -- либо пишите свою функцию сравнения. |
Это я понимаю.
Я думал как-то возвращать ссылку на объект, который будет создан в теле конструктора, но как-то пока не сообразил как это сделать, что бы при этом выполнялись (**) и (*) |
Нашел решение в книге с Шаблонами, вдруг кому понадобится, мне вот на собеседовании задавали.
Шаблон называется 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 |
Часовой пояс GMT +3, время: 05:36. |