Javascript的新手,阅读Crockford的Javascript:The Good Parts(以及其他内容)
在关于函数的第4章中,Crockford正在展示如何在外部函数中保留它以用于内部函数,我理解。
我的问题是,在他的示例代码和更多类似代码中,为什么要使用这个辅助函数:
myObject.double = function() {
var that = this;
var helper = function () {
that.value = add(that.value, that.value);
}
helper();
};
是否因为add()在全局范围内,而value在myObject中,所以我需要复制这个(myObject)然后转移到global我可以抓住add()吗?
否则我不确定为什么需要辅助功能?
答案 0 :(得分:13)
在本书的这一部分中,他证明了在访问函数父级的that
对象时使用this
是常规的。
没有必要使用辅助函数来做代码所做的事情。这只是一个示例,用于说明如何解决this
对象的范围问题。
答案 1 :(得分:2)
封装。您的示例中的helper()
仅存在于myObject.double()
的范围内,它不会在其外部可见/可见。我相信它被称为私有方法而不是“帮助”功能。
答案 2 :(得分:1)
这本书还说“这必然是错误的价值”。 “this”的“错误”值是全局对象吗? Crockford修复它的方式让我不确定。难道他不能通过调用this.helper()来使用“经典”背景的人更熟悉它,即将helper()作为公共方法吗? 我猜是的,并猜测他是这样做的,只是为了(也)显示仍然使用函数调用模式的解决方法,但希望确认;不熟悉javascript我不确定我的猜测是否正确。