为什么在Javascript中经常使用辅助方法?

时间:2011-03-12 22:22:19

标签: javascript

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()吗?

否则我不确定为什么需要辅助功能?

3 个答案:

答案 0 :(得分:13)

在本书的这一部分中,他证明了在访问函数父级的that对象时使用this是常规的。

没有必要使用辅助函数来做代码所做的事情。这只是一个示例,用于说明如何解决this对象的范围问题。

答案 1 :(得分:2)

封装。您的示例中的helper()仅存在于myObject.double()的范围内,它不会在其外部可见/可见。我相信它被称为私有方法而不是“帮助”功能。

答案 2 :(得分:1)

这本书还说“这必然是错误的价值”。 “this”的“错误”值是全局对象吗? Crockford修复它的方式让我不确定。难道他不能通过调用this.helper()来使用“经典”背景的人更熟悉它,即将helper()作为公共方法吗? 我猜是的,并猜测他是这样做的,只是为了(也)显示仍然使用函数调用模式的解决方法,但希望确认;不熟悉javascript我不确定我的猜测是否正确。