将一个不存在的属性的引用赋值给一个变量
问题描述:
这可能是一个愚蠢的问题,但我有一个对象,我想在其中存储其他函数/变量的引用并稍后使用它们。将一个不存在的属性的引用赋值给一个变量
例如,
var obj = {
keyA: {
ref: window.objects.someAAA
},
keyB: {
ref: window.objects.someBBB
}
}
在这里,当我设置此目的,window.objects
是空的,所以访问这些键(someAAA
和someBBB
)会给undefined
。
我知道我很笨,当我第一次想到像这样分配它们并期望它们在加载后的实际值时,通过obj.keyA
和obj.keyB
可用。但显然,他们仍然包含undefined
。
但有没有办法做到这一点!我知道如果我设置字符串,而不是参考,我可以eval
,但任何更好的解决方案?
答
认为这应该工作
var obj = {
keyA: {
ref: function() { return window.objects.someAAA; }
},
keyB: {
ref: function() { return window.objects.someBBB; }
}
}
您可以然后通过
obj.keyA.ref()
测试
访问添加上面的代码然后做
window['objects'] = {};
window['objects']['someAAA'] = 'Hallo';
obj.keyA.ref() // will Output 'Hallo'
答
尝试使用Getters这种情况下:
var obj = {
get keyA(){
return (window['objects'])? window.objects.someAAA : null
},
get keyB() {
return (window['objects'])? window.objects.someBBB : null
}
}
// as now window.objects doesn't exists
console.log(obj.keyA); // outputs "null"
window.objects = {'someAAA': "aaa-value", 'someBBB': "bbb-value"};
console.log(obj.keyA, obj.keyB); // outputs "aaa-value" "bbb-value"
你可以有值,当你打电话给他们返回window.objects.something'的'的价值功能。 – Pointy
你只使用JavaScript吗?你有任何框架或libray,如jQuery? – CodeArtist
我明白了,所以没有办法存储参考。 @CodeArtist,是平原Js –