В AngularJS вы часто строите объект с завода, который обычно занимает другую область функций, а затем контроллер (хотя это может быть моей проблемой проектирования и практики). Предположим, вам нужно выполнить некоторую логику (либо в контроллере, либо в сервисе, независимо от того, что у вас есть), логика должна выполняться в другой области, в которой объект был создан, поэтому конструктор не определен)Ссылка на «экземпляр»/прототип из другой области действия
Например , обычно могут иметь:
Global scope
Factory scope
- Object returns
Controller scope
- Injection of factory returns the object
или в более выгодных условиях:
var x = (function() {
function Thing() {}
return new Thing();
})();
//How can I check x is instance of Thing if Thing is not defined in this scope?
я попытался x instanceof Thing
или x.constructor == Thing
, но, очевидно, присущая проблема заключается в том, что Thing()
конструктор не определен в SCO физическое воспитание Как я могу это преодолеть (или какая там практика), поскольку я предполагаю, что эта проблема довольно неудобна и довольно распространена)?
Почему бы не определить '' 'Thing''' в области видимости фабрики и контроллера? – Daniel
Если вы создаете экземпляр только одного 'Thing' (здесь:' x'), вы не должны делать его классом. Если вы хотите создать несколько экземпляров, вы не должны воссоздавать класс каждый раз. – Bergi