笔记1

68 阅读1分钟

事件流

  • "DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段
  • 当事件处于目标阶段时,事件调用顺序决定于绑定事件的书写顺序

new 一个构造函数,如果函数返回 return {} 、 return null , return 1 , return true 会发生什么情况?

  • 如果函数返回一个对象,那么new 这个函数返回这个函数的返回对象,否则返回 new 创建的新对象
    function Aa(){
      this.name = "xiaofei";
      return null`;`
    }
    let insA = new Aa(); // {name: "xiaofei"}
    
    function Aa(){
      this.name = "xiaofei";
      return {age: 1};
    }
    let insA = new Aa(); // {age: 1}

手写 bind、apply、call

    Function.prototype.call = function (context, ...args) {
      context = context || window;

      const fnSymbol = Symbol("fn");
      // this代表这个方法,将这个方法复制个context的一个属性后执行,方法里面的this就指向这个content了
      context[fnSymbol] = this;
      context[fnSymbol](...args);
      delete context[fnSymbol];
    }
    
    let obj = {age: "xiaofei"};
    function b(){
      console.log(this.age,111)
    }
    b(); // undefined,111
    b.call(obj); // xiaofei,111

问:事件循环机制 (Event Loop)

事件循环机制跳转链接

数组去重

Array.from(new Set([1, 1, 2, 2]))

如何判断一个对象是空对象

Object.keys(obj).length === 0