前端的几种手写代码实现
前言 现在的前端门槛越来越高,不再是只会写写页面那么简单。模块化、自动化、跨端开发等逐渐成为要求,但是这些都需要建立在我们牢固的基础之上。不管框架和模式怎么变,把基础原理打牢才能快速适应市场的变化。下面介绍一些常用的源码实现: call实现 bind实现 new实现 instanceof实现 Object.create实现 深拷贝实现 发布订阅模式 call call 用于改变函数 this 指向,并执行函数 一般情况,谁调用函数,函数的 this 就指向谁。利用这一特点,将函数作为对象的属性,由对象进行调用,即可改变函数 this 指向,这种被称为隐式绑定。 apply 实现同理,只需改变入参形式。 let obj = { name: 'JoJo' } function foo(){ console.log(this.name) } obj.fn = foo obj.fn() // log: JOJO 实现 Function.prototype.mycall = function () { if(typeof this !== 'function'){ throw 'caller must be a function' } let othis = arguments[0] || window othis._fn = this let arg = [...arguments]