JS中访问对象的两种方式区别

Posted 小猿笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中访问对象的两种方式区别相关的知识,希望对你有一定的参考价值。

可以使用下面两种方式访问对象的属性和方法

1.对象名.属性名    对象名.方法名()

2.对象名["属性名"]   对象名"方法名"

 1     var obj = {
 2                name : "小明",
 3                age : 18,
 4                say : function(){
 5                    console.log("我是"+this.name+"我"+this.age+"岁");
 6                }           
 7         };
 8         console.log(obj.name);
 9         console.log(obj["name"]);
10         obj.say();
11         obj["say"]();

对于已经存在的属性和方法,用.和用[]得到的结果一致、

对于不存在(未定义)的属性和方法,用.会创建这个新的属性或方法,而用[]的方式访问不会创建新的属性或方法

例如在用for-in遍历对象时

        for(var x in obj){            
            console.log(x);        //输出obj中的属性名,方法名
            console.log(obj.x);//想要用.的方法输出对应的属性和方法    结果是undefined,原因在于JS语言中.方法可以用来声明,声明对象属性的方式就是属性名.属性值
                   //这里实际先声明了obj的x属性,并且未初始化该属性,然后输出了该属性值,所以为undefined
     }

利用[]方式只能访问和读取,不会定义新的属性

for(var x in obj){            
            console.log(x);        //输出obj中的属性名,方法名
            console.log(obj[x]);//输出对应的属性值和方法,方法未调用所以输出的是方法的代码
        }

以上是关于JS中访问对象的两种方式区别的主要内容,如果未能解决你的问题,请参考以下文章

JS中的两种数据类型以及实现引用类型的深拷贝

在堆栈上声明对象的两种方式之间的区别

java的两种同步方式, Synchronized与ReentrantLock的区别

JS访问对象属性的两种方法

js对象取值的两种方式

JavaScript对象属性访问的两种方式