当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js代码实现bind函数效果

js代码实现bind函数效果

2018年10月19日  | 移动技术网IT编程  | 我要评论

今天面试被问了个bind函数实现问题,实现功能如下(可能是为了一些不能使用原生bind函数的场景,具体的支持情况可以到can i use查看):

// 实现mybind函数,输出'wang~' 
var cat = { 
    say: function() { 
        console.log(this.content); 
    }, 
    content: 'miao~' 
}; 
var dog = { content: 'wang~' }; 
cat.say.mybind(dog)();
function.prototype.mybind = function(obj) {
    this = obj;
}

开始的想法本来是直接赋值this指向(面试前在干其他的事,有点短路):

function.porotype.mybind = function(obj) {
    this = obj
}

很显然是行不通的,报错了~~~this不能作为左侧变量被赋值:

uncaught referenceerror: invalid left-hand side in assignment

面试官提示可以借助call和apply函数进行实现,我的实现方法变成了下面的东西(因为this的显示绑定只能通过call apply bind函数):

function.prototype.mybind = function(obj) {
    return (...args) => this.apply(obj, args)
}

成功~~~,当然如果不使用箭头函数和...运算符,也可以换其他方式实现,也都不难

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网