2011-05-25 64 views
3

我正在學習TinyMCE代碼和偶然發現這種方式暴露的公共方法:在JavaScript中公開方法。爲什麼這個語法?

tinymce.extend(this, { 
    execCommand : execCommand, 
    queryCommandState : queryCommandState, 
    queryCommandValue : queryCommandValue, 
    addCommands : addCommands 
}); 

什麼是寫在上面,如果下面的代碼可以用來代替(用更少的代碼和更少的執行時間的好處需要相同的任務)

this.execCommand = execCommand; 
this.queryCommandState = queryCommandState; 
this.queryCommandValue = queryCommandValue; 
this.addCommands = addCommands; 

或者更短,在一個對象的聲明某處:

execCommand: execCommand, 
queryCommandState: queryCommandState, 
queryCommandValue: queryCommandValue, 
addCommands: addCommands 

抓住哪裏?

回答

2

的一兩件事,在跳出我是第一個樣品,你必須有方法,其中TinyMCE expects its argumentsextend功能。

extend源掃視,它檢查每個undefined鍵值對,僅將其添加到該對象,如果他們定義。所以,擴展一個類時會有一些有用的附加功能。

+0

正確,它期望給定對象將被擴展的對象列表。這是他們發佈私有方法的方式,但我的問題是爲什麼要這樣發佈,而不是一個更簡單的方法? – Andy 2011-05-25 05:40:59

+0

@andy:看我的編輯:) – 2011-05-25 05:43:33

+0

感謝德米安,對我而言,這僅僅意味着,在方法名稱中出現拼寫錯誤的情況下,需要更多時間來識別錯誤。但是我猜想,除非有人做過類似的複雜工作,否則很難與錫蒂姆創造者爭論。 – Andy 2011-05-25 05:48:18