Concatenative inheritance vs class inheritance in JavaScript

concatenative inheritance works like a composition to me when I look to it at the beginning, but people keep naming it as an inheritance. classes, however, use the prototype to create a prototype chain that connects objects together. the question now is, if both concatenative inheritance and class inheritance do the same thing which one to use? here is an example of both scenarios
concatenative inheritance

function Person(name, address) {
 const _name = name
 const _address = address
 const toString = () => `name: ${}, address: ${this.address}`
 return {

function Employee(name, address, salary) {
 const getAnnualSalary = () => 12 * salary
 return Object.assign({ getAnnualSalary }, Person(name, address))

the class inheritance

class Person {
  constructor(name, address) { = name
    this.address = address
  toString() { return `name: ${}, address: ${this.address}` }

class Employee extends Person {
  constructor(name, address, salary) {
    super(name, address)
    this.salary = salary

  getAnnualSalary() { return 12 * this.salary }

Read more here:

Content Attribution

This content was originally published by Fadi at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: