node.js - 關于你不知道的JavaScript上一書介紹的行為委托
問題描述
https://github.com/getify/You...
這本書認為對象關聯風格比面向對象(原型)風格更好,書中也表示不支持ES6的class語法,但平時好像還是用面向對象風格較多,該如何選擇呢?
面向對象風格:
function Foo(who) { this.me = who;}Foo.prototype.identify = function() { return 'I am ' + this.me;};function Bar(who) { Foo.call( this, who );}Bar.prototype = Object.create( Foo.prototype );Bar.prototype.speak = function() { alert( 'Hello, ' + this.identify() + '.' );};var b1 = new Bar( 'b1' );var b2 = new Bar( 'b2' );b1.speak();b2.speak();
對象關聯風格:
var Foo = { init: function(who) {this.me = who; }, identify: function() {return 'I am ' + this.me; }};var Bar = Object.create( Foo );Bar.speak = function() { alert( 'Hello, ' + this.identify() + '.' );};var b1 = Object.create( Bar );b1.init( 'b1' );var b2 = Object.create( Bar );b2.init( 'b2' );b1.speak();b2.speak();
問題解答
回答1:如何看待《你不知道的js》中倡導的編程風格?
我覺得賀老師的回答說的挺好的。
回答2:個人覺得,強迫癥選委托,沒強迫癥選面向對象吧。作者應該是個眼里融不進一點沙的強迫癥,對class帶來的個別問題特別抵觸。選擇哪種方式完全是個人的喜好,不管選哪種,了解其本質還是基于原型鏈才是重點。個人以前做java的,輕度強迫癥,所以還比較能接受class ^_^
回答3:如何寫代碼,當然是一件很個人的事情,與你的習慣和喜好有關。不過我認為是有一些基本原則作為參考的:
提高開發效率
降低出錯率3.易于閱讀和理解
滿足這三點的方式就是好的方式,違背這三點而強行堅持某種方式就是不值得提倡的。
選擇怎么寫代碼,不如都試試,然后按這三條原則對比一下,不必因為某個人怎么說就非要怎么樣嘛。
相關文章:
1. javascript - 下面的這段算法代碼求解釋2. javascript - 在top.jsp點擊退出按鈕后,right.jsp進行頁面跳轉,跳轉到login.jsp3. javascript - js 有什么優雅的辦法實現在同時打開的兩個標簽頁間相互通信?4. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報錯,是什么情況?求大神指點5. css3 - 在sublime text里, 如何讓emmet生成的帶前綴css屬性垂直對齊?6. mac連接阿里云docker集群,已經卡了2天了,求問?7. javascript - 回調函數和閉包的關系8. java - spring-data Jpa 不需要執行save 語句,Set字段就可以自動執行保存的方法?求解9. [前端求職必看]前端開發面試題與答案精選_擴展問題10. 想找個php大神仿個網站。
