2011-03-12 70 views
12

剛接觸Javascript,閱讀Crockford的Javascript:好的部分(除其他事項外)爲什麼在Javascript中經常使用助手方法?

在關於函數的第4章中,Crockford展示瞭如何在內函數中使用外函數來保存這個函數。

我的問題是,在他的示例代碼和一噸多喜歡它,爲什麼要使用這個輔助功能:

myObject.double = function() { 
    var that = this; 

    var helper = function() { 
     that.value = add(that.value, that.value); 
    } 
    helper(); 
}; 

是它也許是因爲加()是在全球範圍內休憩,而價值是在myObject,所以我需要複製這個(myObject),然後轉移到全局,我可以抓住add()?

否則我不知道爲什麼我需要輔助函數?

回答

13

在本書的這一部分,他演示了在訪問函數父項的this對象時使用that是常規操作。

沒有必要使用助手函數做代碼做什麼。這只是一個例子來說明如何解決與this對象有關的範圍問題。

+0

我想知道這是否僅僅是這個概念的例證。謝謝 – 2011-03-12 22:31:02

+1

很好的答案我想我錯過了「那個」。 – airmanx86 2011-03-12 22:33:45

2

封裝。您示例中的helper()只存在於myObject.double()的範圍內,因此它在外面不可用/可見。我相信它被稱爲私有方法而不是「輔助」功能。

1

這本書還說「這是綁定了錯誤的價值」。 「this」是全球對象的「錯誤」價值嗎? 克羅克福德修復它的方式使我不確定。難道他只是通過調用this.helper(),即使helper()成爲公共方法,而不是通過對「經典」背景的人更熟悉的方式來修復它? 我猜想是的,並猜測他是這麼做的,他只是爲了(也)顯示一個仍然使用函數調用模式的解決方法,但希望得到證實;對JavaScript不熟悉我不確定我的猜測是否正確。

相關問題