我们在javascript中访问属性的方式之间的差异

时间:2014-04-15 03:52:54

标签: javascript

实际上我在google上搜索了很多。这是一个非常基本的问题。

这是我的剧本

var test = new Object();
test["test"] = 1;

$("#dot").html(test.test);
$("#bracket").html(test["test"]);

这是我的HTML

<div id="dot"></div>
<div id="bracket"></div>

供参考,此处为http://jsfiddle.net/PWA5G/1/网址。

我的问题是test.testtest["test"]之间的确切差异,因为我的输出相同。

这个问题或主题可能已经重复,但我没有找到任何相关结果。

3 个答案:

答案 0 :(得分:2)

[]运算符允许您使用不能与.运算符一起使用的属性名称。例如

var test = {};
test["invalid-attr"] = 1;
console.log(test["invalid-attr"]);
# 1
console.log(test.invalid-attr);
# ReferenceError: attr is not defined

当我们使用带有字符串的[]运算符时,它只是通过散列我们传递的属性名来获取与之对应的值。但是,如果属性名称在语法上不有效,则.运算符将失败。

答案 1 :(得分:0)

存在一些差异,它允许您使用保留名称...但主要是abc['test']在属性名称可变时有帮助。

像这样:

var a ={};
a.q=2;
a.w=3;
a.e=4;

//on user input

var input = event.key
console.log(a[input]);

答案 2 :(得分:0)

仅举例说明box86rowh。另请注意,目标可以是方法,也可以是属性。虽然它有点做作,但它证明了括号表示法的灵活性。

<p><input type="checkbox" id="needsBillingAddress"><label for="needsBillingAddress">Different Billing Address</label></p>

<div id="billingAddress">
   <p>Billing Address goes here</p>
</div>

<script>
    $(function() {
        (showHideBillingAddress = function() {
            $('#billingAddress')[ $('#needsBillingAddress').is(':checked') ? 'show':'hide' ]();
        })();
        $('#needsBillingAddress').click( showHideBillingAddress );
    });
</script>

这是一个证明这一点的小提琴:http://jsfiddle.net/kQ3Hr/