есть например 3 вида уток 
обычная утка: умеет летать , плавать и крякать!
деревянная: только плавать!
резиновая: плавать и крякать !
есть например массив всех уток [] и в переборе нужно вызвать кряканья у всех уток которые это умеют !
одним словом паттерн стратегия !
я сделал так !
хочу услышать ваше мнения на счет этого ...
Рони ? ))
var Duck = (function () {
	var Duck = function (name) {
		if(!(this instanceof Duck)) return new Duck(name);
		this.name = name;
	}
	var F = function () {};
	var proto = {
		duckWooden: Object.create(F.prototype),
		duckUsual: Object.create(F.prototype),
		duckRubber: Object.create(F.prototype)
	}
	
	var obj =  {
		duckWooden: function (name) {
			if(Duck.prototype != proto.duckWooden) 
				Duck.prototype = proto.duckWooden;
			
			return Duck(name)
		},
		duckUsual: function (name) {
		
			if(Duck.prototype != proto.duckUsual)
				Duck.prototype = proto.duckUsual;
			
			return Duck(name)
		},
		duckRubber: function (name) {
		
			if(Duck.prototype != proto.duckRubber)
				Duck.prototype = proto.duckRubber;
			
			return Duck(name)
		},
		prototype: F.prototype
	}
	
	for(var i in proto) {
		proto[i].constructor = obj[i];
		obj[i].prototype = proto[i]
	}
	return obj;
})();
Duck.prototype.fly = function () { console.log('i fly') }
Duck.prototype.quack = function () { console.log('quack quack! my name '+ this.name)	}
Duck.prototype.swim = function () {	console.log('i swim') }
var wooden = Duck.duckWooden('Della')
Duck.duckWooden.prototype.fly = function () {};
Duck.duckWooden.prototype.quack = function () {};
Duck.duckRubber.prototype.fly = function () {};
Duck.prototype.remove = function () {};
var rubber = Duck.duckRubber('Donald')
var usual = Duck.duckUsual('Billi')
rubber.quack()
usual.quack()
wooden.quack()
console.log(wooden, rubber, usual)