Показать сообщение отдельно
  #12 (permalink)  
Старый 25.10.2014, 12:55
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от terminator-101
 
Регистрация: 14.10.2014
Сообщений: 117

Сообщение от 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
Ответить с цитированием