Javascript对象和数组操作符——.和[]

JavaScript中对象和数组(数组也是对象),操作符主要有两种:

. 和[]

这两种有什么区别呢?
请看测试代码

//读操作
let temp={area_id:"1",county_id:"1",plate_no:"11",product:"40"};
let d1=['area_id','county_id','product'];

console.log(temp.area_id);   //输出1
console.log(temp['area_id']);   //输出1
console.log(d1.area_id);      //undefined
console.log(d1['area_id']);     //undefined
console.log(d1[0]);           //输出area_id
//写操作
let connectString={};
connectString["value"]="sss";  //输出    { value: 'sssss' }
connectString.value='sssss';   //输出    { value: 'sssss' }

let test=[];
test[0]='s';                    //输出     [ 's' ]
test.a='ss';                    //输出     [ 's', a: 'ss' ]
console.log(test.a);            //输出     ss
console.log(test[1]);           //输出     undefined,可以看到虽然在test中存储了一个字符串一个对象,但是test[1],并没有把对象输出出来
console.log(test[0]);           //输出      s

总结:
数组是特殊的对象,对象的所有操作都可以对一个数组进行,通过.和[]操作符都可以对对象和数组进行读写操作,对于单条赋值语句是没有问题的,两者是通用的。
对象的两个操作,应该大家都没问题,通过.和[]是一样的。
数组的操作,.和[]是不同的,通过.运算符,是把数组作为对象进行操作的,通过test[0]是作为数组进行的,两者相当于隔离开来,可以这么理解。而且对于同一个数组,对象操作和数组操作,都是存储在一起的,请看下面的Code

let test=[];
test[0]='s';      
test.a='sss';              
test[1]={a:'ss'};                    
console.log(test);            
//输出    [ 's', { a: 'ss' }, a: 'sss' ],可以看到对数组的对象操作,是放在存储结构的最后面

所以为了防止混乱,最好是
如果是数组,就使用[]操作符
如果是对象,就使用 . 操作符,
这样就不会产生更混乱
那么接下来是重点,如果在一个循环中对一个对象进行赋值会发生什么?

let d1=['area_id','county_id','product'];
let connectString={};
d1.map((value)=>{
        connectString.value='ss';
});
console.log(connectString);    //输出结果为{ value: 'ss' },可以看到并没有把数组中的所有作为键复制给connectString

换一种操作

let d1=['area_id','county_id','product'];
let connectString={};
d1.map((value)=>{
        connectString[value]='ss';
});
console.log(connectString);          
//输出   { area_id: 'ss', county_id: 'ss', product: 'ss' },可以看到把数组的每一项作为对象的键值对赋值成功

总结:在循环操作中,如果要对对象赋值,使用[]操作符,不能使用.操作符
那么是为什么呢?
[]操作符:是取[]里面的值赋值给对象或者数组
.操作符:是直接把.后面作为值赋值给对象或者数组的,不会去取他的值
当然,这是通过实践总结出来的,那么最基本的是什么呢?就是Javascript本身对于对象赋值操作有两种不同的处理方式:
* 如果属性或方法的名称是简单的标识符,则可在对象名称与句点之后加入该属性*
如果属性或方法的名称不是简单的标识符,或在编写脚本时不知道该属性,则可在方括号内使用表达式作为属性的索引
详情链接:
Javascript对象和数组

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值