Sophie

Sophie

distrib > Fedora > 18 > x86_64 > media > updates > by-pkgid > 0f3ab3d340ab585c6b37b142afd1a1b1 > files > 6

nodejs-inherits1-1.0.0-11.fc18.noarch.rpm

A dead simple way to do inheritance in JS.

    var inherits = require("inherits")

    function Animal () {
      this.alive = true
    }
    Animal.prototype.say = function (what) {
      console.log(what)
    }

    inherits(Dog, Animal)
    function Dog () {
      Dog.super.apply(this)
    }
    Dog.prototype.sniff = function () {
      this.say("sniff sniff")
    }
    Dog.prototype.bark = function () {
      this.say("woof woof")
    }

    inherits(Chihuahua, Dog)
    function Chihuahua () {
      Chihuahua.super.apply(this)
    }
    Chihuahua.prototype.bark = function () {
      this.say("yip yip")
    }

    // also works
    function Cat () {
      Cat.super.apply(this)
    }
    Cat.prototype.hiss = function () {
      this.say("CHSKKSS!!")
    }
    inherits(Cat, Animal, {
      meow: function () { this.say("miao miao") }
    })
    Cat.prototype.purr = function () {
      this.say("purr purr")
    }


    var c = new Chihuahua
    assert(c instanceof Chihuahua)
    assert(c instanceof Dog)
    assert(c instanceof Animal)

The actual function is laughably small.  10-lines small.