如果我有一个javascript对象,如下所示
var columns = {
left: true,
center : false,
right : false
}
我有一个函数,它同时传递对象和属性名,如下所示
//should return false
var side = read_prop(columns, 'right');
read_prop(object, property)
的主体会是什么样子的?
发布于 2014-10-16 22:43:06
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中的代码和注释。
发布于 2014-10-04 22:35:08
由于我的项目得到了上面的答案的帮助(我问了一个重复的问题,并在这里被引用),所以我提交了一个答案(我的测试代码),用于在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>
https://stackoverflow.com/questions/4255472
复制相似问题