Цитата:
|
var a = {a: 1}; var b = {b: 1}; var d = new Proxy({}, { get: function(target, name){ return target[name] || a[name] || b[name]; } }); alert(d.a); alert(d.b); |
kobezzza,
Ты че, реально чтоли мягкий? Я тебе говорю, напиши интерфейс, чтобы у тебя были средства для определения таких объектов, добавления свойств и методов в объект. То есть, должно быть someObject.setPrortotype, get prototype, addPrototype, removePrototype. и прочее, чтобы на этом можно было программировать, чтобы от твоих объектов можно было наследоваться, и так далее. Кстати, то говно, которое ты написал не будет работать, там вообще нет никакого разруливания неймспейсов. Короче, это семантически должны быть такие же объекты, как нативные, только с возможностью множественого наследования. Синтаксис не важен. Только поведение. |
Элитного кода тред
Этот тред запиливается для утоления жажды состязаний и выяснения того, кто кого круче в плане прогинга.
|
function pluralParent(...parents) { let DerivativeParent = function() { for (let Parent of parents) { Object.assign(this, new Parent()); } }; DerivativeParent.prototype = new Proxy(DerivativeParent.prototype, { //Наследование свойств прототипа get: (target, name) => { if (target[name]) { return target[name]; } for (let Parent of parents) { if (name in Parent.prototype) { return Parent.prototype[name]; } } } }); DerivativeParent = new Proxy(DerivativeParent, { //Наследование статичных свойств класса get: (target, name) => { if (target[name]) { return target[name]; } for (let Parent of parents) { if (name in Parent) { return Parent[name]; } } } }); return DerivativeParent; } class Cat { constructor() { this.isACat = true; } meow() { console.log("meow"); } } class Dog { constructor() { this.isADog = true; } bark() { console.log("woof"); } } class CatDog extends pluralParent(Cat, Dog) {} let catDog = new CatDog(); catDog.meow(); catDog.bark(); console.log(catDog); Затестить можно в babel repl в последнем файрфоксе. |
Цитата:
|
Цитата:
Цитата:
|
Erolast,
Я подозревал, что щас вы тут начнете нести детский лепет. Ты не реализовал множественное наследование, ты даже не сымитировал его, ты просто добавил прокси, и все. Еще раз повторяю, для не особо сообразительных. В Js есть нативный объект от которого наследуют все объекты. К нему прилагаются средства, для работы с ним -- изменение слота, получение слота, и так далее. Должно быть то же самое, примерно, но с множественным наследованием. |
Erolast, опередил :)
|
Цитата:
//как-то криво перенеслось( |
Часовой пояс GMT +3, время: 13:29. |