継承

The Good Parts のやつ

var mammal = function(spec) {
  var name = spec.name,
  cry = spec.cry,
  self = {
    getName: function() {
      return name;
    },
    getCry: function() {
      return cry;
    },
    say: function() {
      console.log(self.getName() + ' ' + self.getCry() + '.')
      return self;
    },
  };
  return self;
};

var cat = function(spec) {
  var self = mammal(spec);
  self.sleep = function() {
    var name = self.getName();
    console.log(name + ' zzzz.');
    return self;
  };
  return self;
};

var dog = function(spec) {
  var self = mammal(spec);
  self.run = function() {
    var name = self.getName();
    console.log(name + ' run.');
    return self;
  };
  return self;
};

cat({name: 'tama', cry: 'meow'}).say().sleep();
dog({name: 'pochi', cry: 'bow'}).say().run();