23.07.2015, 19:17
|
Аспирант
|
|
Регистрация: 22.07.2015
Сообщений: 68
|
|
Сообщение от kobezzza
|
Чё тут реализовывать, берёшь Proxy или делаешь геттер над прототипом.
|
Покажи код
|
|
23.07.2015, 19:20
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
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, 23.07.2015 в 19:26.
|
|
23.07.2015, 19:27
|
Аспирант
|
|
Регистрация: 22.07.2015
Сообщений: 68
|
|
kobezzza,
Ты че, реально чтоли мягкий? Я тебе говорю, напиши интерфейс, чтобы у тебя были средства для определения таких объектов, добавления свойств и методов в объект. То есть, должно быть someObject.setPrortotype, get prototype, addPrototype, removePrototype. и прочее, чтобы на этом можно было программировать, чтобы от твоих объектов можно было наследоваться, и так далее. Кстати, то говно, которое ты написал не будет работать, там вообще нет никакого разруливания неймспейсов.
Короче, это семантически должны быть такие же объекты, как нативные, только с возможностью множественого наследования. Синтаксис не важен. Только поведение.
Последний раз редактировалось tysonfury2015, 23.07.2015 в 19:35.
|
|
23.07.2015, 19:34
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Элитного кода тред
Этот тред запиливается для утоления жажды состязаний и выяснения того, кто кого круче в плане прогинга.
|
|
23.07.2015, 19:37
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
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, 23.07.2015 в 19:59.
|
|
23.07.2015, 19:39
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Safort
|
Элитного кода тред
|
это пять
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
23.07.2015, 19:39
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от nerv_
|
это пять
|
Он наверное так хотел написать
Цитата:
|
Элитного срача тред
|
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
23.07.2015, 19:47
|
Аспирант
|
|
Регистрация: 22.07.2015
Сообщений: 68
|
|
Erolast,
Я подозревал, что щас вы тут начнете нести детский лепет. Ты не реализовал множественное наследование, ты даже не сымитировал его, ты просто добавил прокси, и все. Еще раз повторяю, для не особо сообразительных. В Js есть нативный объект от которого наследуют все объекты. К нему прилагаются средства, для работы с ним -- изменение слота, получение слота, и так далее. Должно быть то же самое, примерно, но с множественным наследованием.
|
|
23.07.2015, 19:48
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Erolast, опередил
|
|
23.07.2015, 19:48
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Сообщение от cyber
|
Он наверное так хотел написать
|
Опечаточка вышла)
//как-то криво перенеслось(
|
|
|
|