剛剛在 JavaScript的中介編程與反射能力示範 讀到兩個 metaprogramming 的範例。
我覺得其中 foreach()
的例子怪怪的。
先來看看維基百科上對 metaprogramming 的定義:
Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, ......
回過頭來看該篇文章所實作的 foreach()
:
它接受並調用一個函數(f
)以及存取一個物件(this.props
),但是並未產生或是修改到任何「程式」。
我不懂作者怎麼會拿它當作 metaprogramming 的例子。
不過文章中另外一個例子——accessor()
——就是個很典型的 metaprogramming 範例。
其實 foreach 在中介編程(metaprogramming)的領域是經典樣式。只是我上文的例子太精簡,以至於看不出它的威力。
回覆刪除請看完整回覆。
http://blog.roodo.com/rocksaying/archives/10637755.html
@遊手好閒的石頭成
回覆刪除感謝您的回覆。您花了很大的篇幅展示 foreach() 的威力,卻未能解開我原本的疑問。
就我的理解,您實作的 foreach() 並未產生新的程式或是修改現有的程式,所以它應該沒有涉及 metaprogramming 的範疇。
不知是我忽略了您的範例程式碼中的什麼細節或是我對 metaprogramming 的瞭解有誤?
(本回應同步發表於您的回覆文章中)