每日五问,Day4

141 阅读1分钟

es5实现继承

function es5Extend (targetClass, extendClass) {
    var protopety = extendClass.protopety
    protopety.construstor = targetClass
    targetClass.protopety = protopety
}
function Parent(){}
function Child (){
    Parent.call(this)
}

谈谈你对作用域的理解

  • 作用域主要分为 全局作用域、函数作用域、块级作用域
  • 全局作用域 定义的变量和函数在作用域的容易位置都可访问
  • 函数作用于定义的变量和函数只能在当前函数作用域下使用
  • 块级作用域let、const才能生效块级别作用域
  • 变量和函数在当前作用于下查询不到会向上级作用域查找, 直到找到或到全局作用域依然没找到位置

闭包的作用和原理

  • 闭包主要通过, 传入一个函数或返回一个函数的方式来创建
  • 经常用于装饰器相关功能, 比如做一些节流、防抖、轮询事件之类的
  • 主要是利用作用域链的特性,且变量是在定义时决定的, 作用域查找是根据变量定义时的作用域开始查找, 而不是运行时的作用域开始查找

谈谈变量提升

  • 变量提升主要是var和function等es5之前的声明
  • js会将var 的变量名提前到当前作用域最开始的地方进行声明
  • 等到执行到具体代码时才会进行赋值

什么是立即执行函数

  • 定义一个匿名立即执行的函数
(fuction(){})()