在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()
构造函数。我怎么能克服这个(或者有什么实践),因为我认为这个问题非常不方便而且相当常见)?
答案 0 :(得分:1)
解决方案是使用Angular DI处理应用程序中可能需要的所有内容。
app
.value('Thing', Thing)
.factory('thing', function (Thing) {
return new Thing;
})
.controller('Some', function (thing, Thing) {
thing instanceof Thing === true;
});
function Thing() { ... }