【发布时间】:2016-08-17 04:37:48
【问题描述】:
我想创建一个可以用 json 文件实例化的构造函数,然后由一些私有函数使用,这些私有函数最终将它们的结果传递给原型的公共函数。这是正确的方法吗?
这里更具体的代码:
//constructor
function queryArray(json){
this.json = json;
//init qry template with default values
function qryInit() {
var qryTemplate = {
//some stuff
}
return qryTemplate;
}
//generate array of request templates
function qryTempArray(json){
var template = qryInit();
var qryTempArray1 = [];
for(var i = 0; i < json.length; i++){
qryTempArray1.push({
'SearchIndex': json[i].SearchIndex,
'Title': json[i].Title,
'Keywords': json[i].Keywords,
'MinimumPrice': json[i].MinimumPrice,
'MaximumPrice': json[i].MaximumPrice,
'ResponseGroup': template.ResponseGroup,
'sort': template.sort
});
}
return qryTempArray1;
}
}
//function for finally building all the queries
queryArray.prototype.qryBuilder = function(){
var qryTempArray1 = [];
qryTempArray1 = qryTempArray(this.json);
//other stuff
}
如果我在对象上调用 qryBuilder 函数,我会收到错误 在 for 循环中 json.length 的函数 qryTempArray 中(未定义)。 为什么会这样?
【问题讨论】:
-
你是想实现依赖注入还是什么?
-
您错过了结束大括号。编辑您的代码
-
query用单个 r 拼写,构造函数名称应大写而实例应小写,缺少右括号,您可以改进缩进,但是除此之外,您的代码很好。 -
你应该只使用支持 ES6 语法的打字稿。结果仍然是 javascript (ES5)
-
谢谢你这么久;为什么你推荐使用打字稿?
标签: javascript function oop private