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