ES6

1.ES6中的对象新增加的API:

assign:用于混合对象,带浅克隆

var obj1 ={}
var obj2 ={
name:"wangcai",
age:20
}
var obj3={
name:"hello"
}
Object.assign(obj1,obj2,obj3)
obj1的结果如下
{ name: 'hello', age: 20 }

注意细节: 第一个参数是目标对象,assign这个方法把其它的参数中的属性全部加在第一个参数身上。

第一个参数在属性复制过程中,可以会被修改,后面的会覆盖前面的属性

assign这个方法的返回值就是第一个参数的引用,也就是返回了第一个参数。

assign这个方法会把原型上面的发展也拷贝了。

assign不能拷贝继承过来的属性

assign也不拷贝不可枚举的属性

assign是浅拷贝,这一点要注意

getOwnPropertyNames():返回一个数组

var obj ={
name:"wangcai",
age:66,
};
console.log(Object.getOwnPropertyNames(obj))
//结果如下
[ 'name', 'age' ]

Object.keys() 得到属性名,放在数组中

var obj ={
name:"wangcai",
age :66
};

console.log(Object.keys(obj))
//结果如下
[ 'name', 'age' ]

对于对象的遍历目前有三种方式:

for in : 会输出自身以及原型链上可枚举的属性。
Object.keys() : 用来获取对象自身可枚举的属性键
Object.getOwnPropertyNames() : 用来获取对象自身的全部属性名

2.es6当中的类

(1).类的声明不会被提升和let,const一样有暂时死去

(2)类的所有代码全部都是在严格模式中执行的

(3)类的所有方法都是不可以枚举的

(4)类的所有方法都无法当成构造函数直接使用

(5)类的构造器必须使用new来调用

这是es5当中的写法

function Person(name,age){
    this.name = name;
this.age = age;
this.showMsg = function(){
console.log(name,age);
},
this.print = function(){
    console.log('xxx')
}
}
var p = new Person();

es6中的类的写法

class Person {
constructor(name='dg',age=60){ //相当于在函数里写了一个默认值
this.name = name;
this.age = age;
} //这里不用添逗号,否贼会报错
showMsg(){ //定义在原型上
console.log(this.age,this.name)
}
print(){ //定义在原型上
console.log('xxx')
}
}
var p = new Person();
        console.log(Person.prototype.showMsg == p.showMsg();    //我们来判断一下p.showMsg()是不是写在原型链

 3.ES6中引入了第6种原始类型:Symbol

Symbol是原始值,且ES6同时扩展了typeof操作符,支持返回“Symbol”,所以可以用typeof来检测变量是否为Symbol类型

let symbol = Symbol('test symbol');
console.log(typeof symbol); //'symnbol'

4.es6中事件循环

执行栈:一个数据结构存放各种函数的执行环境中,每一个函数执行之前,它的相关信息加入到执行栈中,函数调用之前,创建执行环境,然后加入到执行栈中,函数调用完就销毁

这里js引擎永远执行栈顶

js单线程:异步函数某些函数不会立即执行,需要等到一定的时候才能执行

浏览器的5条进程:

1.js线程(主线程)     负责去执行栈的代码

2.GUI线程:js线程和该线程会互相等待

3.事件监听线程:负责监听各种事件

4.计时线程:负责定时器

5.网络线程:各种网路请求

当上面的线程发生了某些事情,如果该线程发现这件事有处理程序,它会将该程序加入到一个事件队列中去,当js引擎发现,执行栈没有任何内容,会将事件队列的第一个函数加入到执行栈中执行

js引擎对事件队列取出执行的方式,以及宿主环境配合,称为事件循环

 

posted @ 2020-03-22 12:32  笑等茶凉zl  阅读(117)  评论(0编辑  收藏  举报