我有一个由两部分组成的问题。
1)我需要访问嵌套在复杂对象中的唯一值列表。我可以通过console.log
输出对象:
console.log(dataStore);
这将输出以下内容(部分):
`Object
getResponses: function getResponses(ids)
arguments: null
caller: null
length: 1
name: "getResponses"
prototype: Object
__proto__: function ()
<function scope>
Closure
responseCache: Object
12345: gr.Response
12346: gr.Response
etc...
getImg: function (imageId)
etc... `
我需要一个收集responseCache
:12345,12346,12347等下的数值列表的调用。这些值的总量可能非常大。可能是10,在列表中可能是100。
2)我需要创建一个条件语句,用于比较不属于上述对象的变量的值。例如:
variableX = variableXvalue;
if ("variableXvalue" is one of the unique values in "responseCache") {
//then do this
}
不确定这里问题是否重要,但variableX
处于循环中,遍历页面上的属性。它遍历页面上所有匹配的标记/属性,并且需要在每次循环时将这些属性值与responseCache
值的完整列表进行比较。
感谢您考虑这个问题。
答案 0 :(得分:0)
让我们看一下如何编写这种代码的示例。
var obj = (function() {
var responseCache = {
12345: 12,
12348: 34,
12355: 56
};
return {
getResponses: function getResponses(ids) {
return responseCache[id];
}
};
})();
console.log(obj);
如果您在控制台中运行该代码,您将能够向下钻取并查看与您所看到的输出基本相同的输出。现在,您如何直接访问responseCache
?你不能。它实际上是私有的,只能从该闭包中直接访问。外部代码无法直接访问该变量。如果obj
上的任何函数使用它,则只能间接访问它。