JavaScript对象:按名称访问变量属性为字符串

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

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

我有一个传递对象的函数,以及一个像这样的属性名称

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

身体read_prop(object, property)会是什么样的?

JavaScript对象:按名称访问变量属性为字符串

慕莱坞森
浏览 1331回答 3
3回答

不负相思意

您不需要它的功能 - 只需使用括号表示法:var side = columns['right'];这等于点符号,var side = columns.right;除了right在使用括号表示法时也可能来自变量,函数返回值等的事实。如果您需要它的功能,这里是:function read_prop(obj, prop) {     return obj[prop];}要回答下面与原始问题没有直接关系的一些注释,可以通过多个括号引用嵌套对象。如果您有一个嵌套对象,如下所示:var foo = { a: 1, b: 2, c: {x: 999, y:998, z: 997}};您可以访问财产x的c,如下所示:var cx = foo['c']['x']如果属性未定义,试图引用它会返回undefined(不null或false):foo['c']['q'] === null// returns falsefoo['c']['q'] === false// returns falsefoo['c']['q'] === undefined// returns true

千万里不及你

ThiefMaster的答案100%正确,虽然我遇到了类似的问题,我需要从嵌套对象(对象中的对象)获取属性,所以作为他的答案的替代,你可以创建一个递归的解决方案,将允许你定义一个术语来抓取任何属性,无论深度如何: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];}您对给定属性的字符串引用重新合并的位置 property1.property2JsFiddle中的代码和注释。

暮色呼如

由于我通过上面的答案得到了我的项目帮助(我问了一个重复的问题并在这里提到了),我在var中嵌套时提交了一个用于括号表示法的答案(我的测试代码):<html><head>&nbsp; <script type="text/javascript">&nbsp; &nbsp; function displayFile(whatOption, whatColor) {&nbsp; &nbsp; &nbsp; var Test01 = {&nbsp; &nbsp; &nbsp; &nbsp; rectangle: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; red: "RectangleRedFile",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; blue: "RectangleBlueFile"&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; square: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; red: "SquareRedFile",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; blue: "SquareBlueFile"&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; var filename = Test01[whatOption][whatColor];&nbsp; &nbsp; &nbsp; alert(filename);&nbsp; &nbsp; }&nbsp; </script></head><body>&nbsp; <p onclick="displayFile('rectangle', 'red')">[ Rec Red ]</p>&nbsp; <br/>&nbsp; <p onclick="displayFile('square', 'blue')">[ Sq Blue ]</p>&nbsp; <br/>&nbsp; <p onclick="displayFile('square', 'red')">[ Sq Red ]</p></body></html>
打开App,查看更多内容
随时随地看视频慕课网APP