手写实现 bind 函数

javascript 复制代码
Function.prototype.myBind = function(context) {
    if (typeof this !== 'function') {
        return
    }
    const args = [...arguments].slice(1)
    const fn = this
    return function Fn() {
        // 判断函数作为构造函数的情况,这个时候需要传入当前的函数的this给apply调用,其余情况都传入指定的上下文对象
        const target = this instanceof Fn ? this : context
        return  fn.apply(target, args.concat([...arguments]))
       
    }
}

function setName(name) {
    this.name = name
}

const obj = {
    age: 1
}
const setName1 = setName.bind(obj)
setName1('test')
console.log('正确结果',  obj)
const setName2 = setName.myBind(obj)
setName1('miome')
console.log('正确结果',  obj)
相关推荐
用户69190268133923 分钟前
用浏览器 WebGPU跑DPSK大模型(1) - 模型的下载和前端下载进度的显示
javascript·react.js·架构
夏幻灵32 分钟前
Vue 2 与 Vue 3 在应用初始化上的设计差异与技术演进
前端·javascript·vue.js
悟空瞎说1 小时前
Three.js 架构实践:用 MVC 模式组织你的 3D 应用
前端·javascript
王林不想说话1 小时前
JavaScript 从入门到进阶:一篇覆盖核心知识、运行机制与工程实践
javascript
windliang1 小时前
Claude Code 源码分析(十一):一段会话怎样保存、恢复与续写
前端·javascript·人工智能
天天进步20152 小时前
Python全栈项目--协同办公平台
开发语言·python
JAVA面经实录9172 小时前
集合框架 (六)
java·开发语言
xzlAwin2 小时前
Go语言多版本管理器g工具命令
开发语言·golang
少控科技2 小时前
农场设备管理代码(2)
开发语言·c#
周GZ2 小时前
简单讲解Java中静态方法与 实例方法
java·开发语言