ES6的新特性、Set、Map

一、ES6的新特性

1、什么是ES6?

ECMAScript 6.0(以下简称 ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。

2、ES6和JavaScript的关系

ECMAScript 是 JavaScript 语法规定,JavaScript 是 ECMAScript的实现

3、相对于JavaScript新增加的特性

(1)两种新的声明方式

let 和const:两种新的声明方式

A、JavaScript 中 var 声明方式的局限:会造成变量的作用域的提升

B、let 声明变量只在块中有效(块级作用域 ‘ { } ’)

C、const声明的是变量,必须初始化并且不能重新赋值

(a)const声明的对象(常对象):可以改变对象的属性值,但不能改变对象本身

const obj = {
    name:'张三',
    age : 28
}
console.log(obj)
obj.name = '刘备'
console.log(obj)

obj = {
    id:'1001',
    name:'西安'
}

(b)冻结对象:用const声明对象,用Object . freeze(对象名)函数冻结对象,这样就无法修改对象的属性值

const obj = {
    name:'张三',
    age : 28
}
console.log(obj)

Object.freeze(obj) //冻结obj对象  (b)
obj.name = '刘备'
console.log(obj)

 (c)如何冻结对象的内部的对象:可以通过封装函数,在函数中使用循环的方式逐层冻结

冻结函数的缺点:

//冻结函数的缺点。冻结对象:无法冻结嵌套的内部对象
const obj = {
    name:'张三',
    age : 28,
    family:{
        father:{
            name:'张安',
            age :55
        }
    }
}
console.log(obj)
Object.freeze(obj) //冻结obj对象  (b)
obj.name = '刘备'
obj.family.father.name = '张三丰'  //冻结对象:无法冻结嵌套的内部对象
console.log(obj)

 解决冻结函数:

//自定义冻结函数:逐层对对象进行冻结
const obj = {
    name:'张三',
    age : 28,
    family:{
        father:{
            name:'张安',
            age :55
        }
    }
}
function deepFreeze(obj){
    Object.freeze(obj)
    for(let key in obj){  //obj.hasOwnProperty(key):判断key是否有obj的属性;  typeof obj[key]:判断obj对象的key属性的类型
        if(obj.hasOwnProperty(key) && typeof obj[key] ==='object'){
            deepFreeze(obj[key])
        }
    }
}
console.log(obj)   
//Object.freeze(obj) 无法冻结内嵌对象
deepFreeze(obj)
obj.family.father.name = '张三丰'
console.log(obj)

 (2)临时死区

临时死区:JavaScript 引擎在扫描代码时会在开辟两个区域一个是全局区域(存放 var 声明的变量),另一个是临时死区(存放 let 和 const 声明的变量)

(3)在循环中使用 let 和 const

A、在循环中创建函数

let funArr = []   //数组:用来存放函数(数组的每个单元都是一个函数)

for(let i=0;i<5;i++){
    funArr.push(function(){
        console.log('i=',i)       
    })
}

funArr.forEach(function(item){
    item()
});

B、for-in 循环:用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值