есть например 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)