множественное наследование в 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 в чистейшем прототинпо-ориентированном стиле, иными словами, Ъ. В даном примере еще один бонус: динамическое связывание, что видно из последней строчки. Для лексического можно использовать замыкания, естественно. |
Очередной инстанс "Krutoy"?
Множественное наследование называется миксинами. И когда вы делитесь опытом/фичей/чем-то с людьми - старайтесь давать нормальные имена переменным. И кстати вы забыли написать "var". |
tsigel,
это в недоязычках , видимо, так, а в прототипно-ориентированных языках множественное наследование реализуется делегированием. |
Цитата:
|
tsigel,
Цитата:
|
Цитата:
|
Safort,
Цитата:
|
kotlov-net,
а, так ты синглтон? Тогда прошу прощения. |
Safort,
По существу есть мысли? |
kotlov-net, снова ты, бан.
|
за что ему бан ? множественное наследование не понравилось ?))))
|
На этот раз он быстро выдал себя)))
|
tsigel,
В нормальных языках все так (почти) и происходит, как написано в стартовом посте. o1 := Object clone do( a := 1 ) o2 := Object clone do( b := 2 ) o := Object clone do( appendProto(o1) appendProto(o2) ) list(o a, o b) print # list(1, 2) а вовсе не Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 10:38. |