ES6(ES6新特性、对象静态、数组静态和实例方法API扩展)

目录

ES6新特性

对象静态API扩展

Object.is():判断两个值是否相等

Object.assign():两个参数:复制/拷贝,三个参数:合并对象

Object.assign()实现深拷贝与半深拷贝

Object.getPrototypeOf():获取原型对象

Object.setPrototypeOf():设置原型对象

Object.keys():获取属性名组成的数组,参数:目标对象

Object.values():获取属性值组成的数组,参数:目标对象

Object.entries():获取键值对(属性名和属性值)组成的数组,参数:目标对象

数组静态方法和实例方法API扩展

静态方法,构造函数调用

Array.of():创建数组,参数:数组元素,返回值:新数组

实例方法,从原型对象中调用

arr.find(): 参数:回调函数 返回值:返回第一个满足条件的元素

arr.findIndex():参数:回调函数,返回值:返回满足条件的第一个元素的索引或者-1

arr.fill():修改(填充)原数组,参数:填充的数组元素,返回值:填充好的新数组


ES6新特性

变量声明 let  const

模块化 CommonJs ES6 AMD

包管理机制

babel转码

解构 数组解构 对象解构 字符串解构 数值解构 布尔值解构

对象简写

箭头函数

拓展运算符

对象静态API拓展

数组静态API拓展 实例方法拓展

类 继承

Symbol基本数据类型 表示独一无二的值

迭代器(for...of),set map集合(接收任意类型的键组成的键值对)

promise async

对象静态API扩展

Object.is():判断两个值是否相等

console.log(1===1);

console.log(Object.is(1,1));

true
true

console.log(+0===-0);

console.log(Object.is(+0,-0));

true
false

console.log(NaN===NaN);

console.log(Object.is(NaN,NaN));

false
true

Object.assign():两个参数:复制/拷贝,三个参数:合并对象

// 两个参数:目标对象 要复制的对象

// 返回值:目标对象

let obj={};

let obj1={

  name:"zhangsan",

  age:12

};

let result=Object.assign(obj,obj1);

console.log(obj);

console.log(obj===result);

// 三个参数:目标对象 合并的对象1 合并的对象2

// 返回值:目标对象

let obj={};

let obj1={

  name:"zhangsan"

};

let obj2={

  age:15

};

let result=Object.assign(obj,obj1,obj2);

console.log(obj);

console.log(result===obj);

Object.assign()实现深拷贝与半深拷贝

基本数据类型实现的是深拷贝

引用数据类型实现的是半深拷贝/浅拷贝

let obj = {};

let obj1 = {

    // 基本数据类型实现的深拷贝

    name: "张三",

    age: 15,

    // 引用数据类型实现的是半深拷贝/浅拷贝

    clazz: {

        number: 'web2201'

    }

};

Object.assign(obj, obj1);

// 深拷贝,互不影响

obj.name = '李四';

// 半深拷贝,影响

obj.clazz.number = 'web2202';

console.log(obj, obj1);

Object.getPrototypeOf():获取原型对象

let obj={

  name:"zhangsan"

};

console.log(Object.getPrototypeOf(obj));

console.log(obj.__proto__);

console.log(obj.constructor.prototype);

Object.setPrototypeOf():设置原型对象

参数 :目标对象 设置的新原型对象

let obj={

  name:"zhangsan"

};

let obj1={

  gender:'男',

  age:15

};

Object.setPrototypeOf(obj,obj1);

console.log(obj.__proto__);//-->obj1

console.log(Object.getPrototypeOf(obj));

Object.keys():获取属性名组成的数组,参数:目标对象

Object.values():获取属性值组成的数组,参数:目标对象

Object.entries():获取键值对(属性名和属性值)组成的数组,参数:目标对象

let obj={

  name:"zhangsan",

  age:12,

  gender:'男'

};

console.log(Object.keys(obj),'返回属性名组成的数组');

console.log(Object.values(obj),'返回属性值组成的数组');

console.log(Object.entries(obj),'返回键值对组成的数组');

数组静态方法和实例方法API扩展

静态方法,构造函数调用

Array.of():创建数组,参数:数组元素,返回值:新数组

//10不再是长度,是数组元素

let result = Array.of(10);

//创建数组长度为10的数组

var arr = new Array(10);

console.log(result, arr);

实例方法,从原型对象中调用

arr.find(): 参数:回调函数 返回值:返回第一个满足条件的元素

let arr1 = [1, 3, 2, 3, 2];

let result2 = arr1.find((item) => {

    return item > 2

});

console.log(result2);

3

arr.findIndex():参数:回调函数,返回值:返回满足条件的第一个元素的索引或者-1

let arr2 = [1, 2, 3, 4, 5];

let result3 = arr2.findIndex((item) => {

    return item > 3

});

console.log(result3);

3

arr.fill():修改(填充)原数组,参数:填充的数组元素,返回值:填充好的新数组

let arr3 = [1, 2, 3, 4];

let result4 = arr3.fill(8);

console.log(result4);

console.log(arr3);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值