了解JS闭包-继承-预编译-数组

文章详细阐述了JavaScript中的闭包概念,包括其产生、作用及优点,如变量常驻内存和避免全局污染。同时,讨论了原型继承的原理和实现方式,以及预编译阶段的函数声明提升和变量声明提升等重要概念。此外,还提到了数组的使用和操作。
摘要由CSDN通过智能技术生成

闭包

当内部函数被保存到外部,将生产闭包。IE低版本中闭包会导致原有作用域链不释放,造成内存泄漏
局部变量能在闭包中访问,但不能单独访问

  • 满足以下特点的叫闭包:
    1. 函数嵌套
    2. 内部函数使用外部函数的变量和形参
    3. 被引用的参数和形参不会被销毁
  • 闭包的优点:
    1. 变量常驻内存
    2. 避免全局污染
    3. 可以声明私有成员

继承

  • 面向对象的特点之一:类的继承
    • 继承:子类继承父类的属性和方法,目的是 让子类的实例能调取父类中的属性和方法。
    • 原型对象中的原型继承:先在自身属性和方法中找,如果没有,沿着原型链查找;原型继承目的是让父类中的方法在子类实例的原型链上
      Child.prototype = new Parent(); Child.prototype.constructor = Child;

特点: 其他语言的继承一般是拷贝继承,而 JS 中的原型继承是把父类的原型放到子类实例的原型链上完成继承,子类实例想调取父类的方法,是通过 _proto __ 原型链来完成

预编译

  • JS运行步骤:语法分析,预编译,解释执行
  • 浅层导引:函数声明整体提升,变量 声明提升
  • 预编译前奏:imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量为全局变量。 一切声明的全局变量,全都是window的属性。window就是全局的域
  • 预编译过程:发生在函数里的预编译
    1. 创建AO(执行期上下文) 对象
    2. 找形参和变量声明,将形参和变量名作为AO属性名,值为undefind
    3. 将实参值与形参相统一
    4. 在函数体里找函数声明,值赋予函数体
  • 发生在全局里的预编译
    1. 创建GO(执行期上下文) 对象 ; GO==window
    2. 找形参和变量声明,将形参和变量名作为GO属性名,值为undefind
    3. 在函数体里找函数声明,值赋予函数体

数组

  • 概念:数组是一种数据类型
  • 作用:使用单独的变量名来存储一系列的值
  • 数据类型:
    1. 基本数据类型
    2. 特殊数据类型
    3. 复合数据类型
  • 声明数组
    1. 通过new创建数组
    2. 省略new运算符创建数组
      • 【注】上面两种方法,传入参数只有一个,并且是数字的时候,表示直接声明这么长的
    3. 用中括号表示数组
    4. 数字属性
      • 数组.length——返回数组中元素的个数
    5. 访问元素
      • 数组[下标]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不听念经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值