绑定函数绑定到baz后,调用fn.apply(bar,)
想知道什么在JavaScript / Node.js优先
如果我这样做:
var baz = {}; var bar = {}; var fn = function foo(){}.bind(baz); fn.apply(bar, []);
将总是有巴兹的背景? 任何原因为什么?
fn
函数将始终将上下文设置为baz
对象。 它是这样实现的,以确保在使用bind
你将不会丢失任何上下文。
从MDN 描述的bind()
方法:
bind()函数创build一个新的函数(一个绑定函数),该函数具有与被调用的函数(绑定函数的目标函数)相同的函数体(ECMAScript 5术语中的内部调用属性),并将此值绑定到bind()的第一个参数, 不能被覆盖 。
绑定函数可以接收另一个上下文时有一个例外: fn
被调用为构造函数: var o = new fn()
。 在这种情况下,上下文将成为新的实例对象(但这应该避免和用于构造函数的正常function)。
本章详细介绍.bind()
方法。
你为什么不testing
var baz = {a:1}, bar = {a:2}, fn = function(){console.log(this.a)}.bind(baz); fn(); // 1 fn.apply(bar); // 1 so bind takes precedence fn.call(bar); // 1 so bind takes precedence
- 使用Node和Angular从Last.fm API获取search结果
- NEDB查询返回错误肯定与数组$ nin
- 给定未定义的res.statusCode
- 了解Javascript和node.js中的callback
- JS / Lodash / Nodejs:在lodash foreach循环中,正在迭代的variables的打印名称
- JavaScriptasynchronouscallback地狱
- ExpressJS>路由器中间件>通过redirect传递variablesreq.foo不工作
- 如何将此代码从同步传输到asynchronous(nodejs)?
- Node / Express / mysql如何在jade页面中获取SQL结果?