Сегодня я обнаружил кое-что очень странное: если вы создаете объекты с помощью функции-конструктора и ключевого слова new
, но возвращаете
функцию из конструктора он ведет себя следующим образом:
this
в функции конструктора, this
ссылается на объект, который был правильно создается из конструктора. Это то, что вы ожидали получить от нового
. Вот пример:
function Constructor() {
var self = this;
this.name = 'instance';
return function() {
return self;
}
}
Итак, если вы создали его экземпляр следующим образом: var instance = new Constructor ()
В результате может получиться следующее:
typeof instance //returns "function"
typeof instance() //returns "object"
instance() //returns { name: 'instance' }
Итак, я думаю, у меня есть три вопроса: