这片文章主要解决下面的问题
- 声明对象key和value到底加不加引号?两种有什么区别?
.
点语法和[]
访问对象的属性有什么区别?- JS对象中不合法的key值
.
点语法和[]
访问都可以吗? .
点语法和[]
访问对象的方法怎么访问?- 数据字典中如何声明?
- 给后台传递参数JS对象如何写,key和value到底加不加引号?
声明JS对象key和value
第一种key和value都加引号
// 这种方式是最常见的方式,key和value都加引号 let obj1 = { 'name': 'akangwu', 'age': '18', 'say1': function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义 console.log('obj1第一种key和value都加引号') }, } let name = 'name' let age = 'age' // 访问方式 // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。 console.log(obj1.name) // akangwu console.log(obj1.age) // 18 console.log(obj1.say1()) // obj1第一种key和value都加引号,访问对象方法需要加括号调用 console.log(obj1.say1) // [Function: say1],不加括号调用就是这种 // 使用变量方式访问 console.log(obj1[name]) // akangwu console.log(obj1[age]) // 18 // 使用[]访问 console.log(obj1['name']) // akangwu console.log(obj1['age']) // 18 console.log(obj1['say1']()) // obj1第一种key和value都加引号,访问对象方法需要加括号调用 console.log(obj1['say1']) // [Function: say1],不加括号调用就是这种
第二种key没有引号,value有引号
// 这种方式是最常见的方式,key和value都加引号 let obj2 = { name: 'akangwu', age: '18', say1: function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义 console.log('obj2第二种key没有引号,value有引号') }, } let name = 'name' let age = 'age' // 访问方式 // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。 console.log(obj2.name) // akangwu console.log(obj2.age) // 18 console.log(obj2.say1()) // obj2第二种key没有引号,value有引号,访问对象方法需要加括号调用 console.log(obj2.say1) // [Function: say1],不加括号调用就是这种 // 使用变量方式访问 console.log(obj2[name]) // akangwu console.log(obj2[age]) // 18 // 使用[]访问 console.log(obj2['name']) // akangwu console.log(obj2['age']) // 18 console.log(obj2['say1']()) // obj2第二种key没有引号,value有引号,访问对象方法需要加括号调用 console.log(obj2['say1']) // [Function: say1],不加括号调用就是这种
第三种key有引号,value没有引号
// 这种方式是最常见的方式,key和value都加引号 let obj3 = { 'name': akangwu, // 这里只要不是数字,就必须要加引号。不加引号会默认成变量,但是全局没有声明变量,就会报错 'age': 18, 'say1': function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义 console.log('obj3第三种key有引号,value没有引号') }, } let name = 'name' let age = 'age' // 访问方式 // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。 console.log(obj3.name) // akangwu console.log(obj3.age) // 18 console.log(obj3.say1()) // obj3第三种key有引号,value没有引号,访问对象方法需要加括号调用 console.log(obj3.say1) // [Function: say1],不加括号调用就是这种 // 使用变量方式访问 console.log(obj3[name]) // akangwu console.log(obj3[age]) // 18 // 使用[]访问 console.log(obj3['name']) // akangwu console.log(obj3['age']) // 18 console.log(obj3['say1']()) // obj3第三种key有引号,value没有引号,访问对象方法需要加括号调用 console.log(obj3['say1']) // [Function: say1],不加括号调用就是这种
JS对象中不合法的key
// 这种方式是最常见的方式,key和value都加引号 let obj4 = { '11name': '身份证', // 这里只要不是数字,就必须要加引号。不加引号会默认成变量,但是全局没有声明变量,就会报错 'AA-age': '军官证', } let 11name = 'name' // 报错,因为变量要合法 let AA-age = 'age' // 报错,因为变量要合法 // 访问方式 // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。 console.log(obj4.11name) // 报错,key值比较特殊,不合法这种方法就不能访问 console.log(obj4.AA-age) // 报错, key值比较特殊,不合法这种方法就不能访问 // 使用变量方式访问 console.log(obj4[11name]) // 报错, 因为声明的变量11name不合法,不合法这种方法就不能访问 console.log(obj4[AA-age]) // 报错, 因为声明的变量AA-age不合法,key值比较特殊,不合法这种方法就不能访问 // 使用[]访问 console.log(obj4['11name']) // 身份证 console.log(obj4['AA-age']) // 军官证
数据字典中如何声明
// 两种数据字典都是设置可以的。但是这种数据字典里面的key容易有非法的key,所以还是建议数据字典加上引号 let obj5 = { '0001':'中国工商银行', '0002':'中国建设银行', '0003':'中国交通银行', '0004':'中国民生银行', '0005':'中国农业银行', } let obj6 = { 0001:'中国工商银行', 0002:'中国建设银行', 0003:'中国交通银行', 0004:'中国民生银行', 0005:'中国农业银行', }
给后台传递参数JS对象如何写,key和value到底加不加引号
// 传递给后台的数据key可以不加,也可以不加,但是建议不加。但是value只要不是变量,就必须加。涉及到数字的时候需要和后台沟通是字符串还是数字 var postData1 = { accnum: me.globalVars.detailsInfo.accnum, certinum: me.globalVars.detailsInfo.certinum, drawreason: '101',//提取原因:离退休提取 }
总结
- 声明对象,传递给后台数据的时候key值不需要加引号;因为你声明对象肯定不会声明非法变量,同时传递给后台的字段也不会是非法变量,因为后台也是有变量命名要求的;
- 声明数据字典的时候,建议key和value都加引号,单引号双引号都可以。因为后台返回的代码会是数字,可能存在非法命名,非法代码;
- 访问对象的属性的时候:
- 如果是对象本来的属性,也就是静态属性,建议使用
.
来访问 - 如果是后续自己给对象加上的,也就是动态属性,建议使用
[]
来访问
- 如果是对象本来的属性,也就是静态属性,建议使用
作者:豆沙小饼干
链接:https://juejin.cn/post/6883829643133059080
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。