composition over inheritance
楔子 如果平常在寫 OOP(物件導向)語言的人,應該就會很熟悉繼承(inheritance);如果有寫 ruby 的人,應該更熟悉鴨子型別(duck typing);如果在寫 FP(functional programming)的,就更熟悉組合(composition)。每個語言都有他的特性,端看怎使用而以,語言的熟悉度就在於這些手法的習性而以。 但在 javascript 中其實都可以實踐這些特性來讓不同的技術人來使用,今天就拿一些網站的 demo code 來分享。 code 先來看看標準的 es2015 的 classes & prototype Inheritance with Classes // case I prototype var Animal = function(name) { this.name = name } var Alligator = function(name) { Animal.apply(this, arguments); // Call parent constructor } Alligator.prototype = Object.create(Animal.prototype) Alligator.prototype.constructor = Alligator var jack = new Alligator("jack") // case II classes class Animal { constructor(name) { this.name = name } } class Alligator extends Animal {} const jack = new Alligator("jack") // extends class Alligator extends Animal { constructor(....