JavaScript中点号与方括号访问对象属性的区别
作者:青柠时间:2026-10-23 21:17:01浏览:143
本文解析JavaScript中访问对象属性和方法的两种主要方式:点号(.)和方括号([])。两者在访问已存在成员时结果一致,但在处理未定义属性时行为不同:点号会隐式创建新属性,而方括号仅读取或赋值,不会自动创建。通过for-in遍历示例,展示了方括号在动态访问属性名时的优势及避免意外创建属性的机制。
JavaScript对象属性访问的两种基本方式
在JavaScript中,访问对象的属性和方法主要有两种语法形式。
第一种是使用点号操作符,格式为:对象名.属性名 或 对象名.方法名()。
第二种是使用方括号操作符,格式为:对象名["属性名"] 或 对象名["方法名"]()。
var obj = {
name : "小明",
age : 18,
say : function(){
console.log("我是"+this.name+"我"+this.age+"岁");
}
};
console.log(obj.name);
console.log(obj["name"]);
obj.say();
obj["say"]();
已存在成员访问的一致性
当访问的对象属性或方法已经存在时,使用点号和方括号得到的结果是相同的。
未定义属性的行为差异
关键区别在于访问不存在的(未定义的)属性或方法时:使用点号会隐式创建一个新的属性或方法,而使用方括号方式访问则不会创建新的属性或方法。
for-in遍历中的实际应用
这一区别在使用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]);//输出对应的属性值和方法,方法未调用所以输出的是方法的代码
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
作者最新文章
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
