3 回答
TA贡献1777条经验 获得超10个赞
您不需要它的功能 - 只需使用括号表示法:
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
TA贡献1784条经验 获得超9个赞
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.property2
JsFiddle中的代码和注释。
TA贡献1853条经验 获得超9个赞
由于我通过上面的答案得到了我的项目帮助(我问了一个重复的问题并在这里提到了),我在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>
添加回答
举报