21- 继承、闭包、柯里化

本文深入探讨JavaScript的高级特性,包括闭包的概念、形成条件及作用,例如如何创建不被销毁的执行空间和扩展变量作用域。接着,解释了柯里化函数的原理,即将多参数函数转化为单参数函数的过程。此外,还讲解了面向对象编程中的继承概念,包括子类继承父类的属性和方法,以及在ES5和ES6中的实现方式。
摘要由CSDN通过智能技术生成

闭包

        => 函数的高级应用

        => 回顾函数

function fun(){

console.log("内容")

}

let fun = function(){

console.log("内容")

}

fun()

let fun = new Function('console.log("内容")')

                补充函数内存结构

                函数销毁的执行空间

                函数不被销毁的执行空间

        闭包是javascript语法现象,是函数的高级用法

        闭包形成条件:

                1. 函数嵌套- 外层函数 内层函数

                2. 外部引用返回的内层函数

                3. 内层使用外层函数变量

        闭包作用:

                1. 形成不被销毁的执行空间,延长变量生命周期, 缺点,容易引起内存泄露

                2. 外部可以访问内部函数的变量- 变量作用域扩展 - 没有形成闭包,只能内部函数访问外层函数变量

                3. 形成块作用域定义私有变量

柯里化函数

        将有多个形参的函数转换成多个只有一个形参的函数

        通用柯里化函数

                1. 定义可以变长度形参函数              

  function fn(...args){

    console.log(args) // [1,2,3]

    }

    fn(1,2,3)

                2. 定义一个函数,参数也是函数,参数函数它参数个数

                function fn(func){

                        console.log(fn.length)

                }

继承

        面向对象

                        - 面向对象编程思想

                                找对象,解决问题,如果对象不存在,封装对象

                        - 构造函数

                        - ES6 class类

                面向对象三大特性之一 继承

                        1. 封装 对象属性和方法

                        2. 继承

                        3. 多态 一个事物有多种表现形态

                                let num = 100 // number

                                num = '100' // string

                继承

                        =>子类继承父类,子类就拥有父的属性和方法

                        =>表示类与类之间的关系, 父类和子类关系

                        现实生活中的继承

                                儿子继承父亲money、home、car

                        ES5 实现继承

                        1. 构造函数继承

                                在子类构造函数中调用父类构造函数

                        2. 拷贝继承-实现原型属性和方法继承

        class 类继承

                继承: 类与类之间的关系,

                        子类继承父类

          语法:
             // 父类
             class Parent{
                 constructor(){
                     this.money = 10000
                 }
                 playGame(){

                 }
             }
             // 子类Son继承父类Parent
             class Son extends Parent{
                 constructor(){
                     // 先要实例父类再有子类实例
                     super() // 调用父类构造器实例化父类
                     this.name = 'jack'
                 }
             }



             let parent1 = new Parent()
             let s1 = new Son()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值