使用字符串按名称获取对象的属性

时间:2015-03-29 17:11:35

标签: javascript string object window

我经常阅读如何使用JavaScript中的字符串调用函数。但是如何以相同的方式获取对象的属性This post演示了如何使用字符串来调用函数。如何使用对象属性实现相同的功能?

我试过这个: 的 Fiddle

但这一行并没有给我预期的结果。

alert( window[val] ); 

我做错了什么?

这是完整的代码:

f1("obj.key"); 

function f1(val){
   var obj={
      key : "Hello World"
   };
   alert( obj.key );       // Hello World
   alert( window[val] );   // undefined
}

2 个答案:

答案 0 :(得分:0)

首先,obj仅在函数范围内定义,如果你想让窗口知道它,你应该在全局范围内创建它(在函数范围之外)。第二,你应该调用窗口[" obj"] [" key"](将字符串与点的两侧分开)。祝你好运!

答案 1 :(得分:0)

这有两个问题。首先是因为你在obj之前声明了var,你将范围设置为函数,因此它不会被窗口访问。其次,无论你放在窗口[val]的括号中,都必须是window对象的直接属性。基本上你需要传入窗口[obj] [key]。

基本上对于你正在做的事情,你会使用这样的东西:

f1("obj.key"); 

function f1(val){
   obj={
      key : "Hello World"
   };

   var current = window;
   var attributes = val.split( '.' );
   for (var i = 0; i < attributes.length; i++) {
            current = current[attributes[i]];
   }

   $('#2').text( obj.key );     // works fine
   $('#1').text( current ); // Based on the string you pass
}`
相关问题