mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.1 KiB
52 lines
1.1 KiB
13 years ago
|
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.
|