Сообщение от Voronar
|
будет создаваться для каждого экземпляра (так как ты используешь this), а это слишком затратно.
|
Да, ступил на ночь глядя, бошка не варила. Вот этот вариант не пойдет?
Interface=function(init){
var o={}
var base={
open: function(){console.log("virtual open")},
close: function(){console.log("virtual close")}
}
if(init){
o.open=init.open||base.open
o.close=init.close||base.close
}else{
o.open=base.open
o.close=base.close
}
return function(){return Object.create(o)}
}
Class1=Interface({open: function(){console.log("just open")}})
Class2=Interface({close: function(){console.log("just close")}})
Class3=Interface()
o1=Class1()
o2=Class2()
o3=Class3()
o1.open(); o1.close(); o2.open(); o2.close(); o3.open(); o3.close()
// just open
// virtual close
// virtual open
// just close
// virtual open
// virtual close