仅从Object名称获取对Javascript对象的引用?

时间:2013-11-19 15:40:21

标签: javascript object

在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]);
}

2 个答案:

答案 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]);
}