js面试必须知道

  1. 定义函数3方法:
    1. 函数声明  function fn(){};//function(){}//()=>{};会预解析,声明提前
    2. 函数表达式 var xx=function(){} ;let xx=()=>{}
    3. 构造函数 new;//会解析两次:1:常规;2:传入构造函数的字符串;
  2. 函数4中调用:
    1. Fn();
    2. (function(){})();
    3. Obj.fn()
    4. New fn()
    5. Fn.call()//apply()
    6. =======================
    7. (()=>{})()
  3. Call  apply       bind
    1. 改变this指针;
    2. 实现继承和借用(劫持)别的对象方法;
      1.   
      2. 合并数组:Array.prototype.push.apply(arr1,arr2);
      3.   
      4. 最大值:Math.max.apply(null,arr1);
      5.   
      6. 判断字符串类型:object.prototype.toString.call({});
  1. 4常见设计模式:
    1. 工厂模式;解决很对相似的问题:new fn(原料);造兵;
    2. 单利模式;不管谁,调用几次,只能被实例化一次;   obj1===obj2
    3. 沙箱模式:函数放在自执行函数里,用闭包暴露return{xx:xfn};可以调用接口;
    4. 发布者订阅者模式;关注公众号,发送对应的新消息给你;监听和发布;
  2. 原型链:对象继承属性的一个链条
原文地址:https://www.cnblogs.com/yancongyang/p/11170058.html