我有封闭树:'A'包含私人封闭'煎饼'和'B'。有一种情况,我需要从'B'公共功能内部打电话,私人关闭'A' - '煎饼'并检索其公共特性。我该怎么做?哦,这没用,因为这不是一个对象。
我的代码:
var A = (function() {
var pancake = (function() {
return {
numeric: 142
};
})(A);
var B = (function() {
return {
init: function(name) {
console.log(pancake.numeric);
//How to access the same element using 'name' variable?
}
};
})(A);
return {
init: function() {
B.init('pancake');
}
};
})();
A.init();
JSFiddle可能会显示更多详细信息:http://jsfiddle.net/yALkY/3/
提前致谢
答案 0 :(得分:1)
虽然我必须与jfriend00合作,但是给定的代码过于复杂,一个解决方案是引入一些 map 来存储引用,例如:
var A = (function() {
var pancake = (function() {
return {
numeric: 142
};
})();
var B = (function() {
return {
init: function(name) {
console.log(privateVars[name].numeric);
//How to access the same element using 'name' variable?
}
};
})();
// added:
var privateVars = {
pancake: pancake
};
return {
init: function() {
B.init('pancake');
}
};
})();
A.init();
当然,缺点是您必须手动维护该列表。