前言
在写js代码时,经常看到这样的情况:
ob['arr1'] = "String";
ob2.arr = "String"
总是有些困惑,它们的type都是object,为什么读取属性的方式不同。
区别
具体的概念等就不赘述了,就说声明以及使用。
- JSON
// 声明
let json = {
'arr1' : 'string1',
'arr2' : 'string2'
};
// 使用
const getArr = json['arr1'];
// 动态赋值
let json = {}
for(let item in numbers) {
json[item] = item;
}
- Object
// 声明
let object = {
arr1 : 'string1',
arr2 : 'string2'
};
// 使用
const getArr = json.arr1;
// 动态赋值
let object = {}
for(let item in numbers) {
json.item = item;
}
纠错
一般情况下属性名加引号和不加引号是都可以的,效果是一样的,比如下面age属性加不加引号都可以访问到的:
#但是,不符合规范的属性名必须要加引号
1.比如以数字打头的属性名:
var obj = {undefined
name: ‘wozien’,
53age: 16
}
在chrome中会报错:
2.数字开头的属性必须用obj[ ]方括号进行访问,如下:
var obj = {undefined
name: ‘wozien’,
‘53age’: 16
}
console.log(obj.53age); // error
console.log(obj[‘53age’]); // 16
3.纯数字的属性用[]进行访问的时候引号可以去掉的,如下:
var obj = {undefined
‘0’: ‘a’,
‘1’: ‘b’
}
obj[0] === obj[‘0’] // true
console.log(obj[1]); // b
这也是js中数组是对象,但是数组能用array[index]访问的原理。
转载
原文链接:https://blog.csdn.net/CWH0908/article/details/86670662