https://github.com/getify/You...
這本書認(rèn)為物件關(guān)聯(lián)風(fēng)格比物件導(dǎo)向(原型)風(fēng)格更好,書中也表示不支援ES6的class語法,但平常好像還是用物件導(dǎo)向風(fēng)格較多,該如何選擇呢?
物件導(dǎo)向風(fēng)格:
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();
物件關(guān)聯(lián)風(fēng)格:
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();
個人覺得,強(qiáng)迫癥選委託,沒強(qiáng)迫癥選物件導(dǎo)向吧。作者應(yīng)該是個眼裡融不進(jìn)一點(diǎn)沙的強(qiáng)迫癥,對class帶來的個別問題特別抗拒。選擇哪一種方式完全是個人的喜好,不管選哪一種,了解其本質(zhì)還是基於原型鏈才是重點(diǎn)。個人以前做java的,輕度強(qiáng)迫癥,所以還比較能接受class ^_^
如何寫程式碼,當(dāng)然是一件很個人的事情,與你的習(xí)慣和喜好有關(guān)。不過我認(rèn)為是有一些基本原則可以作為參考的:
提高開發(fā)效率
降低出錯率
3.易於閱讀與理解
滿足這三點(diǎn)的方式就是好的方式,違背這三點(diǎn)而強(qiáng)行堅持某種方式就是不值得提倡的。
選擇怎麼寫程式碼,不如都試試,然後以這三條原則對比一下,不必因為某個人怎麼說就非要怎麼樣嘛。