手撕源码 发表于 2021-03-25 | 更新于 2022-09-27 实现 call()、apply、bind()1234567891011121314151617181920212223// callFunction.prototype.call = function call(context, ...args) { const self = this const key = Symbol('key') // null undefined context == null ? (context = window) : null // string number !/^(object|function)$/i.test(typeof context) ? (context = Object(context)) : null // array function object context[key] = self const result = context[key](...args) delete context[key] return result}// bindFunction.prototype.bind = function (context, ...args) { const _this = this return function proxy(...params) { return _this.apply(context, args.concat(params)) }} 相关文章 前端面试之代码实现 前端面试之高级javascript 前端面试之javascript JavaScript思维导图 「超详笔记」算法——动态规划(JS版) 本文作者: wuwhs 本文链接: https://wuwhs.gitee.io/2021/03/25/shred-source-code/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!