在javascript中,假设我有一个名为str = "document"
的字符串。如何从字符串名称中获取引用它的Object,Document?
所以我想要的是,获取字符串并获取对Object的引用,并在当前闭包中使用字符串名称。
str = "window";
我需要在这里引用Window对象。
有没有动态的方法来获取这些参考?
function getObject(str){
/* logic */
}
getObject('window'); // returns [object Window]
getObject('document'); // returns [object HTMLDocument]
使用案例 我试图模糊一些来自一系列字符串的东西。这是我想要做的。如果你们能告诉我最好的方法,那会很棒。
function hook(Obj, prop, newValue) {
console.log(Obj, typeof Obj, prop);
Object.defineProperty(Obj, prop, {
'get': function () {
return newValue;
}
});
}
function test(Obj, prop) {
var before = Obj[prop];
hook(Obj, prop, 'xyz);
var after = Obj[prop];
if( before == after){
alert(Obj + '.
'+ prop +'
Not Changed ');
} else {
alert(Obj + '.
'+ prop +'
Changed ');
}
}
var data = [['document', 'domain'], ['window.document', 'location'], ['location', 'href']];
var i=0;
for(i=0; i<data.length; i++){
test(data[i][0], data[i][1]);
}
答案 0 :(得分:2)
如果您的对象是全局对象,那么您可以这样做 -
window['your-window-object'];
如果它是另一个对象的属性,那么你可以这样做 -
obj['property-name'];
在每种情况下,您都需要知道变量的范围。
示例 -
var doc = window['document']; // gives you the document object
var obj = {
prop1: 1;
prop2: 2
}
var propValue = obj['prop1']; // gives you 1
对于局部变量,您可能很想使用eval
,但您几乎应该总是这样。有关详细信息,请google。
答案 1 :(得分:-1)
您可以使用
获取参考function getObject(str)
{
console.log(this[str]);
}