Slide 50
Slide 50 text
Typed
Dynamic
JavaScript can unreliably
do multiple inheritance.
function multiInherit (...protos) {
return Object.create(new Proxy(Object.create(null), {
get (target, prop, receiver) {
var obj = protos.find(obj => prop in obj);
return obj ? Reflect.get(obj, prop, receiver) : void 0;
},
set (target, prop, value, receiver) {
var obj = protos.find(obj => prop in obj);
return Reflect.set(obj || Object.create(null), prop, value, receiver);
},
has: (target, prop) => protos.some(obj => prop in obj),
ownKeys(target) {
// ...
},
getOwnPropertyDescriptor(target, prop) {
// ...
},
*enumerate (target) { yield* this.ownKeys(target); },
preventExtensions: (target) => false,
defineProperty: (target, prop, desc) => false,
}));
}