【发布时间】:2013-08-01 07:40:21
【问题描述】:
我会用一些代码来开始它。让我们有一个对象:
function SomeObject() {
this.arbitraryVarINeed = 5;
}
现在一种方法是:
SomeObject.prototype.stuffToBeDone() {
var context = this;
function heyThere() {
console.log(context.arbitraryVarINeed);
}
heyThere();
}
和其他:
SomeObject.prototype.stuffToBeDone() {
function heyThere() {
console.log(this.arbitraryVarINeed);
}
heyThere.call(this);
}
现在在这个简单的例子中,显然调用更可取。但是这样怎么样,.call/.apply 还适用吗?
SomeObject.prototype.stuffToBeDone() {
var hello = document.createElement("brofist");
var context = this;
hello.onBroEvent = function (event) {
event.target.innerBro = context.arbitraryVarINeed;
}
}
如果我必须在重复使用 .call/.apply 或只是保存保存在某处的上下文之间进行选择,我应该选择前者还是后者?什么是快速、安全的选择,这两种方法中的一种是否比另一种更好?
事实证明,感谢 Jakob 的回答,事件/匿名函数示例也可以通过 .bind 解决。那么到底是不是绝对不需要传递上下文呢?
【问题讨论】:
标签: javascript