, Object.assign /, . , getter (get text) , obviosly fail:
MDN:
Object.assign() . [[Get]] [[Set]] , . , . , , Object.getOwnPropertyDescriptor() Object.defineProperty().
, :
obj.attr.prototype = new Map();
var settings = {
get text(){},
set text(v){}
};
for(key in settings){
Object.defineProperty(
obj.attr.prototype,
key,
Object.getOwnPropertyDescriptor(settings,key)
);
}
. . this.clear() , , , . , :
1) factory:
{
let internal = class extends Map {
constructor(text){
super();
this.text = text;
};
set text(v){};
get text(){};
};
var obj = {
attr(text){
return new internal(text);
}
};
}
2) :
obj.attr = function(text){
if(this === window) return new obj.attr(text);
this.map = new Map();
this.text = text;
};
obj.attr.prototype = {
set text(v){
this.map.set("text",v);
},
get text(){
return this.map.get("text");
}
};
source
share