手写实现 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)
相关推荐
汤米粥6 分钟前
Python调用百度搜索触发安全验证
开发语言·python
影寂ldy14 分钟前
C# 五大加密算法全套实战(AES/DES对称、RSA非对称、MD5/SHA256哈希)
开发语言·c#·哈希算法
铁皮饭盒41 分钟前
Bun 处理 IO 密集型比 Java 强多少?
javascript
罗超驿42 分钟前
6.Java LinkedList深度解析:从链表原理到源码实践
java·开发语言·链表
anod42 分钟前
Amazon反爬虫:一场从自动化到Chrome插件的折腾之旅
javascript·chrome·amazon·插件
2501_9481069144 分钟前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计
逝水无殇1 小时前
C# 反射详解
开发语言·后端·c#
xlxxy_1 小时前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
北冥you鱼1 小时前
Go语言常用包使用指南:从标准库到第三方利器
开发语言·microsoft·golang
俺不中嘞1 小时前
python常用函数
开发语言·python