JavaScript对象:按string名称访问variables属性

如果我有一个如下所示的JavaScript对象

var columns = { left: true, center : false, right : false } 

我有一个函数,传递对象,和一个属性名称如此

 //should return false var side = read_prop(columns, 'right'); 

read_prop(object, property)外观是什么样的?

你不需要一个函数 – 只需使用括号表示法

 var side = columns['right']; 

这等于点表示法var side = columns.right; ,除了right括号也可以来自variables,函数返回值等的事实。

如果你需要一个函数,这里是:

 function read_prop(obj, prop) { return obj[prop]; } 

ThiefMaster的答案是100%正确(upvoted!),虽然我遇到了类似的问题,我需要从嵌套对象(对象内的对象)中获取属性,所以作为他的答案的替代scheme,您可以创build一个recursion解决scheme这将允许您定义一个术语来获取任何属性,而不pipe深度如何:

 function fetchFromObject(obj, prop) { if(typeof obj === 'undefined') { return false; } var _index = prop.indexOf('.') if(_index > -1) { return fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1)); } return obj[prop]; } 

您的string引用给定属性的位置将重新排列property1.property2

代码和评论在JsFiddle 。

由于上面的答案帮助了我的项目(我问了一个重复的问题,并在这里提到),我在提交一个答案(我的testing代码)括号表示嵌套在var:

 <html> <head> <script type="text/javascript"> function displayFile(whatOption, whatColor) { var Test01 = { rectangle: { red: "RectangleRedFile", blue: "RectangleBlueFile" }, square: { red: "SquareRedFile", blue: "SquareBlueFile" } }; var filename = Test01[whatOption][whatColor]; alert(filename); } </script> </head> <body> <p onclick="displayFile('rectangle', 'red')">[ Rec Red ]</p> <br/> <p onclick="displayFile('square', 'blue')">[ Sq Blue ]</p> <br/> <p onclick="displayFile('square', 'red')">[ Sq Red ]</p> </body> </html>