Показать сообщение отдельно
  #1 (permalink)  
Старый 20.02.2015, 18:07
Интересующийся
Посмотреть профиль Найти все сообщения от kotlov-net
 
Регистрация: 20.02.2015
Сообщений: 13

множественное наследование в JS
Сразу предупреждаю: энтерпрайзное быдло ничего не поймет в этой теме
...
имплементация тривиальна. Надо просто забыть о нативных объектах, и исполльзовать вместо них ф-ции

ga=1; gb=2; gc=3; gd=4

proto_o1=function(arg){
 return({c: gc, d: gd})[arg]
}

proto_o2=function(arg){
 return ({g: 10})[arg]
}

o=function(arg){
 return ({a: ga, b: gb})[arg]||proto_o1(arg)||proto_o2(arg)
}

console.log(o("a"), o("d"))

ga=10; gb=20; gc=30; gd=40

console.log(o("a"), o("d"), o("g"))

//out:
//  1 4
//  10 40 10


тут «объект» o наследует от proto_o1 и proto_o2 в чистейшем прототинпо-ориентированном стиле, иными словами, Ъ.

В даном примере еще один бонус: динамическое связывание, что видно из последней строчки. Для лексического можно использовать замыкания, естественно.

Последний раз редактировалось kotlov-net, 20.02.2015 в 18:39.