首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将function.call赋值给变量

将function.call赋值给变量
EN

Stack Overflow用户
提问于 2017-12-29 22:28:42
回答 1查看 72关注 0票数 1

我有这个代码

代码语言:javascript
复制
var a = function(){}
var b = a.call
b() // TypeError: b is not a function

typeof b'function'console.log(b)显示为ƒ call() { [native code] }

有人能解释一下这种行为吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-29 22:32:39

它不工作的原因是,.call()需要一个函数在调用时作为this值,但您已经将其与a分离,因此没有更多的关系。

因此,因为没有为this参数提供b (即Function.prototype.call )函数,所以它没有有效的函数可供调用,因此它会给出一个错误。

如果你这样做了,它会起作用的:

代码语言:javascript
复制
var b = a.call.bind(a);

这是因为现在a函数被绑定为.call()this值。

另一种方法是使用.call调用.call

代码语言:javascript
复制
var b = a.call;
b.call(a);

现在,您将a函数设置为bthis值(同样是Function.prototype.call方法),但您是在调用点执行此操作的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48024108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档