一个js获取对象属性的问题

问题简化描述:

myObjModel.js
var myObj = new Object();
myObj.personalImg01 = "images/person01.png";
myObj.personalImg02 = "images/person02.png";

以上是为了问题复现简单定义的一个Model,现在需求是需要在别的js文件中根据条件来获取myObj的personalImg01或者是personalImg02的值。

//条件判断方法
function getImg(condition){
    if(condition>1){
        return "personalImg01";
    }else{
        return "personalImg02";
    }   
}

var image = getImg(2);

关键时候到了

var personalImg = myObj.image;

此时personalImg得到的是undefined;因为getImg方法返回的字符串。
但是怎么按这种思路来获取想要的结果呢?想了许久也没有找到解决办法,在这边看看有没有高人给提点一下
当然有可能是我这个这个想法根本就是荒谬不可行而不自知,还是需要高人指点。

我采取的解决办法是

//条件判断方法
function getImg(condition){
    if(condition>1){
        return myObj.personalImg01;
    }else{
        return myObj.personalImg02;
    }   
}
var personalImg = getImg(2);

这样就直接获取到了。

阅读 2.3k
2 个回答

对象的属相a.b 其实是一种简写方式,还有一种方式就是a['b']; 你的这个image不是字符串,所以应该是myObj[image]这样,注:[]里如果还是个字符串,是需要''的,一般这种情况就是你的属性名是类似这样的,nike_name,此时a.nike_name,不行,应该是a['nike_name']

var personalImg = myObj[image];

myObj.image 是去找myObj对象里面的“image”属性,你对象里面没有,所以Undefind

对象的属性还可以通过数组的方式拿到 image就是数组的key 所以myObj[image]就拿的到了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题