спросил 8 лет, 8 месяцев назад
Теперь мы можем использовать «Прокси»
Прокси - JavaScript | MDN
Простой способ использования:
- код Lua
local o = setmetatable({},{__index=function(self,key)
print("tried to undefined key",key)
return nil
end
// С прокси в Javascript
let o = new Proxy({}, {
get: function (target, key, receiver) {
if (!target.hasOwnProperty(key)){
console.log("tried to undefined key "+key);
}
return Reflect.get(target, key, receiver);
},
set: function (target, key, value, receiver) {
console.log(`set `+ key);
return Reflect.set(target, key, value, receiver);
}
})
get: __index
набор: __newindex
Reflect.get: rawget
Reflect.set: rawset
в консоли:
let o= new Proxy({},{
get: function (target, key, receiver) {
let ret = Reflect.get(target, key, receiver);
if (!target.hasOwnProperty(key)){
console.log("tried to undefined key "+key);
}
return ret;
}
})
>> undefined
o.a
>> VM383:5 tried to undefined key a
>> undefined
o.a = 1
>> 1
o.a
>> 1