只是想知道这两者是否总是相同的,如果不是,在什么上下文中?我想我理解"绑定"和"这个",我只是想确定一下。
我试图理解的上下文,超越"绑定"和"这个",
我有一个对象..
var Foo = Class.create({
a: func.bind(this),
b: func
});
和a
和b
this
是一样的吗?两者有什么区别。如果b
得到这个,则在Foo.b
上下文中的被调用方Foo
被调用方。在a
的情况下,我们明确表示this
是我们安装方法时的对象 a
.
它并不总是相同的。
例:
'use strict';
function bar() {
// here is your code
}
bar();
这是this.foo
和foo.bind(this)
不同的时候,因为使用'use strict';
时this
undefined
在bar
中。
更新问题:
A和B是一样的吗?两者有什么区别。如果 b 得到这个,则在 Foo.b 上下文中的被调用方是 Foo。在 a 的情况下,我们明确表示这是我们安装方法 a 时的对象。
它们是对 2 个不同对象的引用。调用的行为取决于您如何准确调用它们。如果没有调用它们的代码,就不可能说它们的行为方式是相似还是不同。
var Foo = Object.create({
a: func.bind(this),
b: func
});
Foo.a();
Foo.b();
使用此代码,它们的行为将有所不同:
-
this
在func
内部,以防a
等于func.bind(this)
调用范围内的this
-
this
在func
内,以防b
等于Foo
JSFiddle: http://jsfiddle.net/tsuddg1o/
另一个更新
对象构造代码等于:
var tmp = func.bind(this);
var Foo = Object.create({
a: tmp,
b: func
});