множественное наследование в 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, время: 17:12. |