ES6基本知识点

说到这里首先要想的是ECMAScript和Javascript之间到底是什么关系呢?

简单的说Javascript是ECMAScript的表现,ECMAScript是Javascript的规范

如果你需要看详细的ES6 点击这里

 

JSON.parse()     转换成真正的json对象

JSON.stringify()   将json对象转换成字符串

 

模板字符串:主要来解决字符串拼接问题
语法:“ 反引号
模板字符串的特性:
在模板字符中可以使用变量、函数调用、运算、换行

let str = `this name is:${name}
函数调用结果:${fn()}
运算结果:${2+num}`;

 

1.箭头函数特性:

1、箭头函数是匿名函数,不绑定自己的this,arguments,super,new.target
2、箭头函数会捕获其所在上下文的this值,作为自己的this值,在使用call/apply绑定时,相当于只是传入了参数,对this没有影响
3、箭头函数不绑定arguments,取而代之用rest参数…解决
4、箭头函数当方法使用的时候,没有定义this绑定
5、箭头函数不能作为构造函数,和 new 一起用就会抛出错误
6、箭头函数没有原型属性
7、不能简单返回对象字面量

 

2.实现数组过滤重复

let arr = [3, 3, 6, 2, 3, 6, 9];
let uniqueArr = arrs => Array.from(new Set(arrs));
console.log(uniqueArr(arr));

 

3.使用JSON方式实现深拷贝

var obj = {
name: ‘张三’, title: ‘学生’ };
var obj_str = JSON.stringify(obj);
var obj_clone = JSON.parse(obj_str);
obj.name = ‘李四’;
console.log(obj);
console.log(obj_clone);

 

4.ES6模板字符串的好处

1、模板字符串为构造多行字符串和字符串拼接带来了更加方便的方式。
2、同一个模板字符串可以通过使用不同的标签,对模板进行进一步处理,输出不同的结果

5.关于对象扩展的属性简写和属性名表达式写法,各举以例

对象的简写形式:
1.当属性名与属性值同名时
2.当属性值为匿名函数时
3当属性名与属性值同名时

属性名简写:
var title = ‘offcn’;
var size = 10;
var obj = {
title,
size,
};
属性名表达式:
var title = ‘offcn’;
obj[title] = ‘中公教育’;

 

6.手写一个promise

var p = new Promise((resolve,reject)={
if(1){
resolve(‘成功’)
}else{
reject(‘失败’);
}
})
p.then((res)=>{}).catch((err)=>{})

 

7.用class定义一个类

class People {
constructor(names, ages, sexs) {
this.name = names;
this.age = ages;
this.sex = sexs;
}
}

 

8.class实现继承

例①:
class Tigger extends Animal{
constructor(props){
super(props)
}
}
例②:
class Computer {
constructor(name, model) {
this.name = name,
this.model = model;
}

showName() {
console.log(`这个${this.name}是${this.model}
`)
}
}

class Notebook extends Computer {
constructor(name, model) {
super(name, model)
}
}

class TabletComputer extends Computer {
constructor(name, model) {
super(name, model)
}
}
let huawei = new Notebook(‘笔记本电脑’, ‘华为’);
huawei.showName()
let iphone = new TabletComputer(‘平板电脑’, ‘苹果’);
iphone.showName()

 

9.谈谈你对async….await的理解:

async…await是基于promise的generator语法糖,它用来等待promise的执行结果,常规函数使用await没有效果;async修饰的函数内部return不会得到预期的结果,会得到一个promise对象;await等待的promise结果是resolve状态的内容,reject状态的内容需要使用try…catch获取,await关键字必须要出现在async修饰的函数中,否则报错。

 

10.ES6中的Symbol类型有什么作用

ES6新增了Symbol数据类型,它用来生成一个独一无二的值,它Symbol数据常用来给对象属性赋值,让对象属性具备唯一性,不容易被覆盖。

 

11.class类中super有哪些用法:

Super在类中有两种用法,一个是super方法,一个是super对象;super方法只能出现在constructor方法中,super对象一般出现在子类覆盖父类的方法中。

 

12.静态和成员的区别

静态的变量或方法归类所有,全局独一份,成员的变量或方法归对象所有,每次实例化对象成员方法和成员变量就会得到一份拷贝;对于一些通用性的属性或方法,可以考虑设置为静态。

 

13.谈谈你对Promise的理解

Promise用来解决异步回调问题,由于js是单线程的,很多异步操作都是依靠回调方法实现的,这种做法在逻辑比较复杂的回调嵌套中会相当复杂;也叫做回调地狱;promise用来将这种繁杂的做法简化,让程序更具备可读性,可维护性;promise内部有三种状态,pedding,fulfilled,rejected;pedding表示程序正在执行但未得到结果,即异步操作没有执行完毕,fulfilled表示程序执行完毕,且执行成功,rejected表示执行完毕但失败;这里的成功和失败都是逻辑意义上的;并非是要报错。其实,promise和回调函数一样,都是要解决数据的传递和消息发送问题,promise中的then一般对应成功后的数据处理,catch一般对应失败后的数据处理。

 

14.深拷贝的原理

Js的深拷贝发生在对象的赋值上,对象赋值的时候仅仅是一个引用赋值,也就是说两个不同变量名指向的是同一份内存空间;基本数据类型则不存在这样的行为;要完成对象的深拷贝需要使用递归遍历所有对象的属性进行赋值,也可以使用JSON.stringfy和JSON.parse操作。

 

15.set和map的特点

Set是一种类似数组的集合类型,它与数组不同的是,不允许存在重复数据;常用操作方法有:add,delete,has,clear等;遍历使用forEach;

Map是一种类似对象的集合类型,它与对象不同的是,key可以接受对象类型,常用的操作方法有:set,get,has,delete等;遍历使用forEach

 

16.使用正则去除字符串首尾空格

var reg = /`\s+/;
var str = ‘ abc’;
var result = str.replace(reg,”);
reg = /\s+$/;
result = result.replace(reg,”);
console.log(‘|’ +result+ ‘|’)

 

 

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片