你不知道的javascript 笔记(上)

你不知道的javascript 笔记(上)

  • 引擎、作用域

  • LHS(赋值)、RHS(查询) ---->逐层寻找

  • 词法作用域与动态作用域

    • javascript是基于词法作用域
  • 函数作用域与块作用域

    • 隐藏内部实现->避免命名冲突

    • 立即执行函数

      (function xxx(){
      
      })();
      
    • 匿名函数缺点

      • 调试不方便
      • 调用自身通过arguments.callee
      • 不方便代码阅读
  • 变量提升

    • 编译阶段
    • 词法解析
    • 函数声明(高)和变量声明优先级
  • 闭包

    • 模块

      function A(){
          function a(){}
          return {
              a:a
          }
      }
      
    • AMD

    • es6导入导出机制

  • this

    • 默认
    • 调用上下文
    • 隐式绑定
    • 显示绑定
      • 硬绑定(call)后不可能再修改它的this
    • 优先级
      • 显式绑定 > 隐式绑定
      • new > 隐式绑定
      • 默认最低
    • 箭头函数
      • 箭头函数的绑定无法被修改(new也不行)
      • 继承外层函数调用的this绑定
    • 判断this绑定对象
      • new调用?绑定到创建的对象
      • call、appay、bind调用?绑定到指定的对象
      • 上下文调用?绑定到那个上下文对象
      • 默认,严格模式下绑定到undefined,否则全局对象
  • 对象

    • 类型
      • 基本类型:stringbooleannumbernullundefinedsymbol
      • 复杂类型:object
    • 字符串字面量和String对象
    • []与.区别
      • [""]使用字符串来访问属性
    • 属性名永远是字符串(自动转化)
    • 可计算属性名 []
  • 数组

    • 可添加属性
  • 复制

    • JSON.parse(JSON.stringify())
    • Object.assign()
  • 属性描述符

    • Object.getOwnPropertyDescriptor
    • Object.defineProperty

    writable

    configurable 可配置的,只能通过defineProperty修改,单向操作,无法撤回,还是能修改writable由true变为false,无法由 false改成true。禁止删除属性

    enumerable 可迭代的 for…in…

    • 结合wirteable和configurable创建一个常量属性
    • 禁止扩展 Object.preventExtensions()
  • 密封 Object.seal()

    • 冻结Object.freeze()
  • 枚举

    • for …in… 遍历可枚举对象
    • Object.hasOwnProperty() 可枚举也可不枚举
    • for…of 和 for…in区别
    • 数组内置的arr[Symbol.iterator()] —> 直到{done:true}
  • 混入

    • 显式混入
      • mixin
    • 与隐式混入
      • 修改this指向
  • 原型

    • 检查类 — instanceof
      • 使用了bind绑定函数,目标函数的.prototype会代替硬绑定函数的.prototype
    • isPrototypeOf在a的整个[[prototype]]链中是否出现过Foo.prototype
    • getPrototype获取一个对象的[[prototype]]
    • setPrototypeOF用来修改一个对象的[[prototype]]
  • 创建关联

    • Object.create()
    • Object.create()的第二个参数制定了需要添加到新对象中的属性名以及这些属性的描述符
    • 委托设计模式
  • 委托行为

    • 意味着某些对象在找不到属性或者方法引用时会把这个请求委托给另一个属性
    • 如果需要自我调用,使用传统的具名函数表达书定义对应函数,不要使用es6的简洁方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值