只是想知道这两个是否总是相同,如果不是在什么情况下?我想我理解'bind'和'this',我只想确定。
我正在努力理解的内容,超越'bind'和'this',
我有一个对象..
var Foo = Class.create({
a: func.bind(this),
b: func
});
且a
和b
的{{1}}是否相同?这两者有什么不同。如果this
得到了这个,b
上下文中被叫方的被叫方为Foo.b
。在Foo
的情况下,我们明确指出a
是我们安装方法this
时的对象。
答案 0 :(得分:1)
并不总是一样。
示例:
'use strict';
function bar() {
// here is your code
}
bar();
以下是this.foo
和foo.bind(this)
不同的情况,因为this
在使用undefined
时bar
为'use strict';
。
更新:
和a和b是一样的吗?这两者有什么不同。如果b得到了这个,那么被调用者在Foo.b的上下文中就是Foo。在我们明确说明这是我们安装方法a。
时的对象的情况下
它们是对2个不同对象的引用。调用的行为取决于你如何称呼它们。如果没有调用它们的代码,就无法确定它们是否以相似或不同的方式运行。
var Foo = Object.create({
a: func.bind(this),
b: func
});
Foo.a();
Foo.b();
使用此代码,它们的行为会有所不同:
this
func
中的{li> a
与this
来电范围内的func.bind(this)
相等
如果this
func
中{li> b
等于Foo
醇>
JSFiddle:http://jsfiddle.net/tsuddg1o/
另一次更新
您的对象构造代码等于:
var tmp = func.bind(this);
var Foo = Object.create({
a: tmp,
b: func
});