闭包 解构赋值 继承

本文探讨了JavaScript中的闭包概念,如何通过高阶函数创建封闭作用域,以及ES6引入的let和const如何提升变量作用域。此外,讲解了对象解构赋值和继承机制在避免代码冗余中的应用,重点介绍了ES6的extends关键字及其在继承方面的优势。
摘要由CSDN通过智能技术生成

闭包:高阶函数的一种方式

所谓的闭包,即是一段封闭的函数块,可以简单理解一段与全局变量不相关的封闭函数,其内部变量的值如果没有被重新调用就不会因外部重新赋值而被改变,在ES6没有或者说像let const这类命名语还没有普及之前,我们使用var来命名变量,var命名的是在全局范围内的,所以该作用域会被提升到函数体外,进而其他地方对该变量有所更改则会影响到函数体内部的变量变化

定义一个a方法,在a方法中定义一个b方法,并且b方法里面用到了a方法里面定义的变量那么此时就形成了闭包函数

在ES6推出let const 后我们可以使用let 或const 解决,let 是块级定义域,其变量只在一个域里发生变化,即在函数中定义let 后,函数外部改变let 变量的值时将会报错。const是定义一个常量的值,即定义一个变量后,即使你在同一域级里重新对这个变量赋值也是不被允许的。

解构赋值:将对象的属性名和属性值分离

const a1 = {
    name:'李华',
    sex:'男',
    hair:'green'
}                //定义一个名字叫李华的对象

let { name,sex} = a1    //解构赋值,把key:name和sex 从a1上取出

 继承:使子对象可以使用父级对象的属性和方法,同时又可以有自己的属性和方法,避免重复定义/使用的代码块大量重复情况:

 

在ES5中,我们使用【call】来继承,call后面的括号里填入父级对象的变量后可以选填新增的变量,一般推荐前面使用this,方便调用。(PS:保护环境,从我做起,因为我实在是想不到其他内容了)

在ES6里,我们使用extends,=>

 

extends里第一个函数是自定义的constructor函数,用来继承父级属性和方法,该函数第一条代码需要添加super()方法,括号里填父级属性名(可变更的属性名)(super!超人天上飞,所以放最前面)

推荐使用后者,不需要再考虑this的指向问题!(yes,好文明!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值