[转]js对象中取属性值(.)和[ ]的区别
原文地址:https://www.jianshu.com/p/6a76530e4f8f
今天在写js的过程中遇到这么一个问题,取一个对象的属性值,通过obj.keys怎么都取不出来,但是用obj[keys]就可以。(这个是模拟的数据)

后来通过查资料明白,我这里data.water输出undefined,是因为object使用(.)获取属性值时,这里的water不是使用的变量water,而是直接去data对象中寻找名为water的key,没有找到,所以报undefined。
区别:
相同点:都可以获取到obj的属性值
不同点:
1 [ ]运算符可以使用字符串变量的内容作为属性名,点运算符不能
2 [ ]运算符可以用纯数字作为属性名,点运算符不能
3 [ ]运算符可以用js关键字和保留字作为属性名,点运算符不能
eg:
1 [ ]运算符可以使用字符串变量的内容作为属性名,点运算符不能

这里由于变量的var声明的变量会导致变量提升,所以会报undefined
2 [ ]运算符可以用纯数字作为属性名,点运算符不能

总结:对于一般的常量就使用(.)运算符,对于其他的使用[ ]运算符。
[转]js对象中取属性值(.)和[ ]的区别的更多相关文章
- 遍历js对象中的属性
可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...
- 怎样判断JS对象中的属性
// 如何在不访问属性值的情况下判断对象中是否存在这个属性 var obj = { a: 2 }; Object.defineProperty( obj, 'b', // 让 b 不可枚举 { enu ...
- c# 根据字段名,得到对象中的属性值
public string GetModelValue(string FieldName, object obj) { try { Type Ts = obj.GetType(); object o ...
- validity属性返回对象中的属性值
- JS对象中的原型
对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...
- 将source类中的属性值赋给target类中对应的属性
/** * 对象的属性值拷贝 * <p> * 将source对象中的属性值赋值到target对象中的属性,属性名一样,类型一样 * <p> * example: * <p ...
- js对象中动态读取属性值 动态属性值 js正则表达式全局替换
$(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...
- JS对象中属性的增删改查
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性 对象的分类: 1.内建对象 -在ES标准中定义的对象,在任何的ES的实现中都可以 ...
- <s:property="a" value=""/>取的<s:debug></s:debug>中的value stack中的属性值
<s:property="a" value=""/>取的<s:debug></s:debug>中的value stack中 ...
随机推荐
- java(包括springboot)读取resources下文件方式
1.使用项目内路径读取,该路径只在开发工具中显示,类似:src/main/resources/resource.properties.只能在开发工具中使用,部署之后无法读取.(不通用) File fi ...
- Zebra-打印特殊字符
Zebra在打印一些特殊的字符时,会出异常. 在要打印的字符串前加 ^FH 然后将字符换成 ASCii编码或utf-8编码的16进制,在前面加_,如D094写成_DO_94 查看字符的编码 htt ...
- git设置本地账户
问题描述: git很方便,git本地如果记住账户信息 问题解决: vscode Git 全局设置: git config --global user.name "mvpbang" ...
- python遍历列表删除多个元素的坑
如下代码,遍历列表,删除列表中的偶数时,结果与预期不符. a = [11, 20, 4, 5, 16, 28] for i in a: if i % 2 == 0: a.remove(i) print ...
- 【Mysql】数据库为啥会出现_encrypt和_warning成对的表
这是因为MySQL数据库的勒索病毒 可能是你数据库的密码太简单或者没有设置密码导致数据库被攻击 详情请参考: https://www.secpulse.com/archives/112351.html
- golang之数据转换
golang按位取反符号和异或符号都是^. fmt.Printf("0x%X\n", 0xFF^0x55) var a uint8 = 0x55 fmt.Printf(" ...
- 【Linux】linux ln文件夹的链接(转)
1 文件的链接ln -s a.py b.pya.py 软链接到b.py (无论 b.py 文件存在与否 都可以成功)2 文件夹的链接ln -s a ba文件夹软链接到b文件夹(b文件夹不能提前创建) ...
- Chrome插件安装和用法
XPath Helper 下载插件,拖入chrome://extensions/ 使用方法:ctrl+shift+x呼出 JSONView的使用: 安装JSONView插件 下载插件,拖入chrome ...
- spring boot是一个应用框架生成工具?
spring boot是一个应用框架生成工具?
- HDU 6583 Typewriter(后缀自动机)
Typewrite \[ Time Limit: 1500 ms\quad Memory Limit: 262144 kB \] 题意 给出一个字符串 \(s\),现在你需要构造出这个字符串,你每次可 ...