荷锄芳草间 2022-10-14 11:41 采纳率: 66.7%
浏览 27
已结题

关于javascript对象的问题,此处为什么不能用user.key?

img

这里的key没有引号啊,为什么用user[key]啊?用user.key就是undefined

  • 写回答

2条回答 默认 最新

  • postnull咖啡 2022-10-14 12:06
    关注

    在JS中,有两种方式访问对象属性:

    • 通过"."
    • 通过"[]"

    在述说区别:

    • "."表示法一般作为静态对象使用时来存取属性
    • “[ ]”表示法在动态存取属性时就非常有用

    再说通俗点,就是用"[]"可以用变量,而"."只能用属性名
    例如定义一个对象:`

    obj = {name="Test"}
    
    console.log(obj.name);
    console.log(obj["name"]);
    // 也可以
    var t = "name";
    console.log(obj[t]);
    

    回到你的问题:

    • 你直接用user.key,那么它会去找user对象的key属性,显然它没有,所以结果就是undefined
    • 用user[key],因为key是变量,等于"name","age"这些字符串,而这些就是user的属性名,当然存在

    另外要说一点,用"[]"的好处是当对象的属性比较特殊的时候,也可以取到,比如包含了特殊字符:

    obj = {"com.abc":"Test"}
    

    如果用"."取值,obj.com.abc就会报undefined,但是用obj["com.abc"]就可以访问!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月14日