js中的觀察者模式具體是指什麼,怎麼感覺就好像是模塊化開發的一個分支?

最近學習到觀察者模式,感覺就好像是在元素綁定的事件中,添加一個新的事件。與設計模式的區別感覺就在於原型鏈的繼承,是嗎?


搞不清楚概念的題主問起問題來嚇死人。

設計模式:在軟體工程中,設計模式(design pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。這個術語是由埃里希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到計算機科學的。——來自維基百科

觀察者模式:設計模式的一種,打個比方就是,作為觀察者的你,訂閱了一些消息,被觀察者在有消息的時候就會通知你,並且把消息給到你。這個模式存在的意義就是解耦,被觀察者無需關心你如何處理消息。

JavaScript 中的觀察者模式:JavaScript 中到處都是觀察者模式,元素綁定的事件只是其中之一。

模塊化開發:和觀察者模式沒有半毛錢的關係,非說有,只能是模塊之間通過觀察者模式通信,但和題主說的「開發的一個分支」,就太撤了。

原型鏈的繼承:和上面八竿子打不著啊,題主如果覺得把原型鏈的繼承掛在嘴上就是懂 JS,嘴上吹噓一些什麼模塊化開發這種概念,會元素綁定的事件就是會前端的話,還有很長的路要走。

最後,比較討厭不會前端的童鞋嘴裡大談特談各種前端里的概念,「我懂,xxx 里也有」 這種句式我是很討厭的。諾,要不你來寫寫看?


實在是不想懟上面某些答主了。。我只是想說,即使是做前端,也要讓自己視野開闊一點,多讀一些編程基礎的內容,不要局限在某些細節的js實現。

觀察者模式只是前人總結出來的無數設計模式中的一種。不懂某種設計模式的思想,直接看它的實現只能事倍功半。


1.設計模式是一種對常見編程模型的總結

2.觀察者模式是其中一種設計模式,是js語言很常見的,比如事件綁定 eventEmmitter 各種框架提供的廣播方法

3.原型鏈繼承是js語言的主要實現繼承的方法,因為對象有prototype這個屬性,和上面的八竿子打不著.....


我看之前的答主估計是連題主怎麼搞混這些概念都想不明白了吧


嗯,你的感覺明顯是錯誤的… 樓上解釋的已經很清楚了,建議你再去好好查查,理一下。


……內個,不希望打擊新手,但是還是建議你好好理清楚吧…


對於有事件機制的語言來說沒必要專門去提什麼觀察者模式。所謂的模式其實基本上就是用來吹的,介面回調都有人說是一種模式呢。


哈哈,看來題主已經成功被前端(編程)的各種概念給搞暈了。

不知道是為了增加入行門檻還是為了顯示自己牛逼,我發現搞前端的人特別喜歡發明一些概念、名詞,讓新手和外行一聽就懵,一聽就覺得高大上,好屌。

建議題主先不去管這些名詞,先去研究前端本身在解決什麼問題,為了解決這些問題,都做了什麼事。

以我粗淺的認知,前端要做的工作,就是生產一堆 HTML, CSS, JS,餵食給瀏覽器(不管多牛逼的技術,最終都要落腳到這三個身上,因為瀏覽器只認這哥仨),呈現出自己想要的效果。如何更快更好的生產它們,如何讓瀏覽器更快更好更安全的展示,就是前端不懈的追求。


推薦閱讀:

前端leader們如何安排面試?
ELSE技術周刊(2017.06.26期)

TAG:前端開發 | JavaScript | 設計模式 |