对象的扩展

对象可以省略v

对象的表达是k:v,当对象的k和v相同的时候,可以省略v

var a = 1;
var b = 2;
var c = 3;

var obj = {
  a: a,
  b: b,
  c: c
}
//等价于
var obj={
  a,
  b,
  c
}

所以,kv一致省略v

例子

 

 注意的是省略v的时候k不能加引号

var obj = {"result"};

这样写是错误的,不能加引号

对象的方法简写

对象的方法也是可以简写的

这两种方法是等价的

 

 

方法的name属性表示的是方法名称

 

 

 Object.keys和Object.values方法

Object.keys方法返回的是对象的键名数组;

Object.values方法返回的是对象的值数组

 

 Object.is方法

判断两个值是否相等的时候使用的是==或者===,它们都有自己的缺点,前者会自动转换数据类型,后者的NaN不自等,还有+0会等于-0,JavaScript之前缺少一种实际的应用场景,就应该是如果值相等就会返回true的结果

 

 对于引用类型值还是按照是否是同一个地址来判断

 

 对象、数组,方法是引用类型值,引用类型值的特点就是在内存中不是同一个地址,所以不自等。

Object.assign方法

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象方法用于对象的合并,将对象的可枚举属性复制到目标对象

 

 

上面的结果是将obj2和obj3合并到了obj1的上面,此时obj1的对象本质上已经被改变了,如果不希望改变结果可以用下面的代码示例

 

 第一个对象就是合并源对象,所以Object.assign()可以有无限个参数,但是只会更改到第一个参数对象中

undefined和null无法转成对象,如果它们作为参数,就会报错。

Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。

 对象中的动态键-方括号

当对象的键名是一个变量的时候,在{}中可以用[]来包裹这个变量成为键的名字

例子

当sex=男生时:                                                                 当sex=女生时:

 

 

 

 省略v的对象写法不能和动态键一起使用

 这样写是错误的

var text = 'a';
var text2 = 'b';
var text3= { [text] };

这种写法才是对的

var text= 'a';
var text2= { [text]: 'b'};

for…in方法

 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。

 

posted @ 2021-10-24 14:38  keyeking  阅读(45)  评论(0编辑  收藏  举报