搜尋

首頁  >  問答  >  主體

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();
淡淡烟草味淡淡烟草味2774 天前906

全部回覆(3)我來回復

  • 扔个三星炸死你

    扔个三星炸死你2017-07-03 11:44:23

    如何看待《你不知道的js》中所倡導的程式風格?

    我覺得賀老師的回答說的挺好的。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-03 11:44:23

    個人覺得,強迫症選委託,沒強迫症選物件導向吧。作者應該是個眼裡融不進一點沙的強迫症,對class帶來的個別問題特別抗拒。選擇哪一種方式完全是個人的喜好,不管選哪一種,了解其本質還是基於原型鏈才是重點。個人以前做java的,輕度強迫症,所以還比較能接受class ^_^

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-03 11:44:23

    如何寫程式碼,當然是一件很個人的事情,與你的習慣和喜好有關。不過我認為是有一些基本原則可以作為參考的:

    1. 提高開發效率

    2. 降低出錯率
      3.易於閱讀與理解

    滿足這三點的方式就是好的方式,違背這三點而強行堅持某種方式就是不值得提倡的。

    選擇怎麼寫程式碼,不如都試試,然後以這三條原則對比一下,不必因為某個人怎麼說就非要怎麼樣嘛。

    回覆
    0
  • 取消回覆