浅析对象访问属性的"."和"[]"方法区别
2018-02-07 16:07
246 查看
昨天在写代码的时候犯了一个错误,调用方法返回对象属性,传的参数是需要返回的属性item,返回的是data.item,因为动态操作对象属性时,用的“.”而不是“[]",于是导致获取不到该属性的值,后来在网上搜了一下,找到这篇文章,觉得写的挺清楚的,所以转载过来分享一下~~
浅析对象访问属性的"."和"[]"方法区别
在JavaScript中通常使用”."运算符来存取对象的属性的值。或者使用[]作为一个关联数组来存取对象的属性。但是这两种方式有什么区别了?
例如,读取object中的property属性值:
object.property
object['property']
以上两种方式都可以实现属性的存取。
1.语法方面的区别
点表示法的对象的属性名是标识符,而后者的属性名则是一个字符串。
2.灵活性方面的区别
在JavaScript编写程序中,可以为对象创建任意数目的属性。但使用”.“运算符来存取一个对象的属性时,属性名是用标识符表示的。而在JavaScript程序中,标识符必须被逐字地输入,它们不是一种数据类型,因此程序不能对其操作。也就是说,标识符是静态的,在程序中必须对其进行硬编码。
而使用数组[]表示法来存取一个对象的属性时,属性名是用字符串表示的。字符串是JavaScript的一种数据类型,因此可以在程序运行中操作并创建它们。
3.性能方面区别
数组[]表示法在存取属性值时会进行表达式运行。而点表示法是直接存取属性值,理论上执行效率会比数组表示法高。性能方面其实可以忽略。
某些场景必须用到数组表示法来动态存取属性值,这个是点表示法无法做到的。
总的来说,这两种方法区别上不大,都有对应的使用场景。点表示法一般作为静态对象使用时来存取属性。而数组表示法在动态存取属性时就非常有用。通常除非必须使用变量来访问属性,否则建议使用点表示法。
浅析对象访问属性的"."和"[]"方法区别
在JavaScript中通常使用”."运算符来存取对象的属性的值。或者使用[]作为一个关联数组来存取对象的属性。但是这两种方式有什么区别了?
例如,读取object中的property属性值:
object.property
object['property']
以上两种方式都可以实现属性的存取。
1.语法方面的区别
点表示法的对象的属性名是标识符,而后者的属性名则是一个字符串。
2.灵活性方面的区别
在JavaScript编写程序中,可以为对象创建任意数目的属性。但使用”.“运算符来存取一个对象的属性时,属性名是用标识符表示的。而在JavaScript程序中,标识符必须被逐字地输入,它们不是一种数据类型,因此程序不能对其操作。也就是说,标识符是静态的,在程序中必须对其进行硬编码。
而使用数组[]表示法来存取一个对象的属性时,属性名是用字符串表示的。字符串是JavaScript的一种数据类型,因此可以在程序运行中操作并创建它们。
3.性能方面区别
数组[]表示法在存取属性值时会进行表达式运行。而点表示法是直接存取属性值,理论上执行效率会比数组表示法高。性能方面其实可以忽略。
某些场景必须用到数组表示法来动态存取属性值,这个是点表示法无法做到的。
总的来说,这两种方法区别上不大,都有对应的使用场景。点表示法一般作为静态对象使用时来存取属性。而数组表示法在动态存取属性时就非常有用。通常除非必须使用变量来访问属性,否则建议使用点表示法。
相关文章推荐
- 浅析对象访问属性的"."和"[]"方法区别
- 浅析JavaScript访问对象属性和方法及区别
- 浅析JavaScript访问对象属性和方法及区别
- mx:states包含mx:AddChild 在切换时提示错误"TypeError: Error #1009: 无法访问空对象引用的属性或方法"的解决方法
- 浅析JavaScript访问对象属性和方法及区别
- "PageMethods未定义"或"对象不支持此属性或方法"解决方法分享
- 浅析JavaScript访问对象属性和方法及区别
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- "PageMethods未定义"或"对象不支持此属性或方法"解决方法分享
- 浅析JavaScript访问对象属性和方法及区别
- "对象不支持此属性或方法"之表单的action赋值
- js访问xml之 各种对象的属性和方法
- JavaScript 对象方法 类方法 原型方法的区别;私有属性 公有属性 公有静态属性的区别
- as3载入影片中TypeError:Error #1009:无法访问空对象引用的属性或方法
- oracle存储过程被调用时出现"rowid"无效或"对象不再存在"的解决方法
- ActiveX "意外地调用了方法或属性访问"
- Error #1009: 无法访问空对象引用的属性或方法 --问过的个问题 解决了 记录下
- PageMethods未定义"或"对象不支持此属性或方法"解决方法
- "=="和equals方法究竟有什么区别
- jquery对象和DOM对象调用一些方法及属性的区别(收集中)