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