我的结构是这样的,因为我需要将它作为angularjs Factory注入。然而,当我使用它站起来为它创建一个测试时,我遇到了困难。我无法在ItemModelGenerator中引用ItemModel!我不能通过使用它作为构造函数来创建它的实例!我尝试了很多方法使用new的关键字或调用两者,调用或者在bot中传递参数,或者其中没有一个工作。我很困惑......
这可能以某种方式使用此ItemModelGenerator作为另一个var的构造函数吗?或者,假设使用其中的ItemModel来生成,但在条件当然,var必须在ItemModelGenerator之外,因为它是一个工厂。
我试过了:
var Service = new ItemModelGenerator();
Service.ItemModel();
new ItemModelGenerator().ItemMode();
new ItemModelGenerator.ItemMode();
..etc
顺便说一句,它确实可以作为angularjs工厂注塑使用,经过测试。
由于
'use strict';
function ItemModelGenerator() {
function ItemModel(inputItem) {
var defaults = {
id:'na',
name:'na'
};
var location = inputItem ? inputItem : { defaults };
this.id = location.id;
this.name = location.itemName ? location.itemName : location.name;
this.itemIsReal = this.isReal(this.id);
}
ItemModel.prototype.isReal = function(id) {
return id !== false ? true : false;
};
return ItemModel;
}
答案 0 :(得分:3)
当您致电ItemModel
时,您将从ItemModelGenerator
返回ItemModelGenerator
。那么你得到的回复是 ItemModel
:
var ItemModel = ItemModelGenerator();
var instance = new ItemModel();
alert(instance.name);
答案 1 :(得分:1)
您将返回构造函数作为包装函数的结果。尝试:
var Service = new ItemModelGenerator()();