75 shaares
let o = {}
o.quack = (x)=> "quack ! "
//Monkey patching ! My console is now a Duck !
console.quack = (x)=> "quack ! "
let b = {
quack: (x)=> "quack ! "
}
console.log(b.quack())
// Duck typing :
// if it looks like a duck (i.e has a function called quack())
// if it quacks like a duck
// then it's a duck
// therefore I can call it like a duck
f = (duck)=>console.log(duck.quack())
f(b)
f(o)
f(console)
// It doesn't look like a duck
f({ })
// It doesn't quack like a duck
f({ quack:"foo"})