jsES6对象新增方法

ES6对象的简洁写法

//直接写入变量
const foo="bar";
const abc={foo};
console.log(abc);//{foo:"bar"}
//直接写入函数
const obj={
	getobj(){
	console.log("hello");
	}
}
obj.getobj();//"hello"

ES6属性表达式,不能和简洁写法同时使用,会报错

const obj ={
["abc"+"de"]:123,
["hel"+"lo"]:function(){
console.log("你好!!");
}
}
console.log(obj["abc"+"de"]);//123
console.log(obj.abcde);//123
console.log(obj["hel"+"lo"]());//你好!!
console.log(obj.hello());//你好!!

Object.is()用来比较两个值是否严格相等,类似于=却可以解决=的缺点:+0===-0为true和NaN不等于自身

console.log(NaN===NaN);//false
console.log(Object.is(NaN,NaN));//true
console.log(+0===-0);//true
console.log(Object.is(+0,-0));//false

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

const obj1={a:1};
const obj2={b:2};
const obj3={c:3};
console.log(Object.assign(obj1,obj2,obj3));//{a:1,b:2,c:3}
**//Object.assign(目标对象,源对象1,源对象2...)**
**//如果目标对象与源对象有同名属性,或者源对象与源对象有同名属性,后面的会覆盖前面的**
**//如果只有一个参数,会返回该参数;如果只有一个参数,还不是对象,会转为对象,再返回;**
**//如果目标对象位置参数为undefined和null时结果报错**
**//当字符串出现在源对象位置上时,会以数组的形式,拷贝到目标对象**

Object.setPrototypeOf()用来设置一个对象的原型对象,返回参数对象本身

var obj ={a:10};
Object.setPrototypeOf(obj,{b:20});
console.log(obj.b);//20
console.log(obj);//{a:10}
//语法:Object.setPrototypeOf(参数对象,新的原型对象);
//如果第一个参数不是对象,会自动转为对象,undefined和null报错

Object.getPrototypeOf()用来读取一个对象的原型对象

//如果第一个参数不是对象,会自动转为对象,undefined和null报错

遍历对象方法,类似于数组的相同方法,Object.keys()对键名遍历(下标)丶Object.values()对键值遍历(值)和Object.entries()对键值对的遍历,需要配合for循环

 for (let index of Object.keys({ a: "李四", b: "王五" })) {
            console.log(index);//a b
        }
 for (let index of Object.values({ a: "李四", b: "王五" })) {
            console.log(index);//李四 王五
        }
for (let index of Object.entries(["张三", "李四"])) {
            console.log(index);//[a,李四] [b,王五]
        }  

Set()数据结构,由于值具有唯一性,可以用来进行数组和字符串的去重

**Set的属性和方法:
size属性:返回Set实例的成员总数(length)
Set的操作方法:
1.add(value)添加某个值,返回Set结构本身
2.delete(value)删除某个值,返回布尔值,表示是否删除成功
3.has(value)返回一个布尔值,判断是否是Set的成员
4.clear()清除所有成员,没有返回值

**Set的遍历方法://///由于Set数据结构没有键名,只有键值,因此keys和values方法结果完全一致
1.keys()返回键名的遍历值(属性名)
2.values()返回键值的遍历值(属性值)
3.entries()返回键值对的遍历值(键值对{a:a})
4.forEach()使用回调函数遍历每个成员
**

var arr = [1, 2, 2, 2, 2, 3, 3, 3, 4, 5];
        var ary = new Set(arr);
        console.log(ary);//Set{1,2,3,4,5}
        console.log(ary.size);//5** //Set的size属性,类似于length**
        console.log(ary.add(22));//Set{1,2,3,4,5,22} **//Set的add方法,添加值**
        ary.delete(22);//**Set的delete方法用于删除某个值**
        console.log(ary);//Set{1,2,3,4,5}
        console.log(ary.has(22));//false **//Set的has方法用于判断某个值是否存在**
        //ary.clear();//Set的clear方法用于清除所有成员
        //console.log(ary);//Set{}
         for (let item of ary.keys()) {
            console.log(item);//1 2 3 4 5
        }//**由于Set数据结构没有键名,只有键值,因此keys和values方法结果完全一致**
        for (let item of ary.values()) {
            console.log(item);//1 2 3 4 5
        }
        for (let item of ary.entries()) {
            console.log(item);[1,1][2,2][3,3][4,4][5,5]
        }
        ary.forEach(function (item, index) {
            console.log(item,index);//item:1,2,3,4,5 index:1,2,3,4,5
        })   

Map()数据结构,可以使用各种类型的值(对象的值)当做键(对象名)

**Map的属性和方法
size属性:返回Map结构的成员总数
Map操作方法
1.set(key,value)设置键名key对应的键值为value,返回整个Map结构,如果key已经有值,键值会被更新
2.get(key)读取key对应的键值,如果找不到key,返回undefined
3.has(key)返回一个布尔值,表示某个键是否在当前Map对象中
4.delete(key)删除某个键,返回true,如果删除失败,返回false
5.clear()清除所有成员,没有返回值
Map遍历方法 ////和Set数据结构不同的是Map有键名,键值
1.keys()返回键名的遍历值(属性名)
2.values()返回键值的遍历值(属性值)
3.entries()返回键值对的遍历值(键值对{a:a})
4.forEach()使用回调函数遍历每个成员
**

var obj = new Map();
        console.log(obj.size);
        //通过set方法设置键名及键值
        //键名为字符串
        obj.set("name", "张三");
        //键名为数值
        obj.set(18, "age");
        //键名为undefined
        obj.set(undefined, "hello");
        //键名为布尔值
        obj.set(true, "你好!");
        //键名为null
        obj.set(null, "hi");
        console.log(obj);
        //通过get方法,获取key对应的键值
        console.log(obj.get(null));
        //通过has方法,判断某个键是否在当前Map对象之中
        console.log(obj.has(1));
        //通过delete方法,删除某个键
        obj.delete("name");
        console.log(obj);
        //通过clear方法,清除所有成员
        // obj.clear();
        // console.log(obj);
        //Map的遍历方法
        for (let item of obj.keys()) {
            console.log(item); //18 undefined true null
        }
        for (let item of obj.values()) {
            console.log(item); //age hello 你好!  hi
        }
        for (let item of obj.entries()) {
            console.log(item);//[18, "age"][undefined, "hello"][true, "你好!"][null, "hi"]
        }
        obj.forEach(function (item, index) {
            console.log(item,index);//item:age hello 你好!  hi   index:18 undefined true null
        })
发布了22 篇原创文章 · 获赞 26 · 访问量 624

猜你喜欢

转载自blog.csdn.net/HwH66998/article/details/104539332