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

脚本宝典收集整理的这篇文章主要介绍了

js实例教程-js代码实现bind函数效果

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

今天面试被问了个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) }

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

今天面试被问了个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) }

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

觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦! js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

总结

以上是脚本宝典为你收集整理的

js实例教程-js代码实现bind函数效果

全部内容,希望文章能够帮你解决

js实例教程-js代码实现bind函数效果

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过