function fn() {
const obj = {
a: 1,
b: 2,
};
return function get(x) {
return obj[x];
};
}
const getObj = fn();
Object.defineProperty(Object.prototype, 'thisSelf', {
get: function () {
console.log(this)
return this;
}
})
const obj2 = getObj('thisSelf')
obj2.a = 3
console.log(obj2)
const proto = {
set: function (key, value) {
console.log(this, "-------------this")
this[key] = value;
},
get: function (key) {
return this[key]
}
};
Object.setPrototypeOf(getObj, proto);
console.log(getObj.set, "---------------set")
getObj.set('a', 3);
getObj.set('c', 5);
console.log(getObj.get('a'));
console.log(getObj.get('c'));