首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在mozilla JS开发工具中使用bind返回“本机代码”?

为什么在mozilla JS开发工具中使用bind返回“本机代码”?
EN

Stack Overflow用户
提问于 2018-06-14 07:30:33
回答 1查看 59关注 0票数 0

我正在写一些JS来证明一些概念,因为我是一个新手,试图学习JS和Node的工作。我已经在mozilla dev site演示屏幕上写了以下内容(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind,除了我发现像这样做快速POCing非常方便之外,没有其他重要的原因使用它):

screenshot-mozilla.img

正如您所看到的,我正在尝试了解bind是如何工作的。在我的最后一段代码中,我有:

代码语言:javascript
复制
var funcagain = foo["bar"];
console.log(funcagain.bind(foo, 'whiskey'));

demo工具中的输出是:

代码语言:javascript
复制
> function () { [native code] }

我希望输出能够使用绑定功能,并选择foo作为this-arg,并具有输出:a-a awhiskey

为什么不是这样,而是我得到了一些意想不到的输出?

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 07:57:34

您需要了解的是,.bind()方法实际上返回了一个函数,稍后可以在绑定了上下文中使用该函数。

您必须调用返回的函数来查看所需的输出

您可以使用.call().apply()立即执行它们。

让我们来看看绑定是如何实际工作的

代码语言:javascript
复制
Function.prototype.myBind = function(context) {
	var self = this;
	return function () {		
		return self.apply(context);
	}
}

window.foo = 1;

var testContext = {
	foo: 123
};

function oldFunc () {
	console.log(this.foo);
}

var newFunc = oldFunc.myBind(testContext);

newFunc();

这是绑定函数的一个真正的虚拟实现,但我希望您现在了解上下文是如何传递给函数并保存以供以后使用的。

有关正确的polyfill,请参阅MDN

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

https://stackoverflow.com/questions/50847679

复制
相关文章

相似问题

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