Javascript中.和[]获取属性的区别
怪我咯
怪我咯 2017-04-10 18:03:34
[JavaScript讨论组]
function _showLinkEle(type){
    var action = {
        0: function(){     // 声音+图片
            
        },
        1: function(){     // 声音+文字

        },
        2: function(){     // 视频

        },
        3: function(){     // 课程链接

        },
        "": function(){
            return;
        },
    };
}
console.log(action.type);  //undefined
console.log(action[type]); //可读取到值

内部javascript是什么机制导致的?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(6)
PHP中文网

.可以快捷访问符合变量命名规则的key
[ ]可以访问任意key,即使key不符合变量命名规则

obj={
    1:'a',
    'b':12,
    '>9':'x'
}
Object {1: "a", b: 12, >9: "x"}
obj.b
12
obj.>9 //不符合变量命名规则
SyntaxError: Unexpected token >
obj['>9']
"x"
obj.1 //不符合变量命名规则
SyntaxError: Unexpected number
obj[1]
"a"
obj['1']
"a"
obj['b']
12
阿神

. 后边跟的是字面量,不是表达式,如果要使用表达式,就只能用 []

var arr = [ 0, 1, 2 ];

arr.length; // . 后直接跟 length,即表明取的是这个对象的 length 属性

var index = 1;
arr[index]; // [] 里可以放一个表达式,这里是变量 index,值为 1
arr[index + 1]; // 这里是表达式 index + 1,值为 2
黄舟

没看懂这个函数,我觉得问题可能在于你的type是个数字,所以不能用点号查询

PHPz

[]里面的是字符串

巴扎黑

1、对象的属性名为【数字】时,只能使用[]访问,数字名称本身相当于index下标赋值

obj={0:100}
//相当于
var obj={};
obj[0]=100;

2、放对象的属性名为【变量】时,只能用[]访问,用"."没用

    var myName = "特朗普";
    var hisName = "希拉里";

    var obj = {};
    obj[myName] = hisName; //myName是个变量
    console.log(obj.myName);//无法取到变量作为属性名称: undefined
    console.log(obj[myName]);//可以取到变量为属性名称: 希拉里
PHPz

你可以认为.是对象调用自己的成员变量,显然你的代码中的0,1,2,3这些数字是不符合变量的命名规则的,但这些数字作为数组[]里的键却是合法的.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号