JavaScript Best Practices

This Post is a place for me to gather tips for writing better Javascript.

** Don't use a constructor function**

"JavaScript built-ins started out using constructors because Brendan Eich was told to make it look like Java."

Don't use the new keyword.

** Don't use instanceof.**

** Don't use ES6 'class' keyword.**

"That's like driving your Tesla Model S to a car dealership and trading it in for a rusted out 1983 Ford Pinto."

If you want to add functionality to an object while reusing that code, use a Object.create. The result of .create() is called a delegate prototype.
Here a doctor needs to draw blood so we are adding him this ability. We can also add it to a nurse etc..

// example for code reuse using Object.create()

let drawBlood = {
  access: 'waitingRoom',
  draw () {
    return `${this.name}, ${this.specialty}, draws blood.`;
  }
};

let doctor = {
  name: 'josh',
  access: 'MedicalRecords',
  specialty: 'oncologist',

  // a short-hand way to declare a function within an object literal
  prescribe (drug) {
    return `${this.name}, ${this.specialty}, prescribes ${drug}.`;
  }
};

doctor = Object.assign(Object.create(drawBlood), doctor);

var result = doctor.prescribe('tylenol');
console.log(result);
result = doctor.draw();
console.log(result);

// josh, oncologist, prescribes tylenol.
// josh, oncologist, draws blood.

I also created a Docker container for running the code samples.

References