Page MenuHomePhorge

proxy.js
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

proxy.js

import { test, summary } from './helpers.js';
console.log('Proxy Tests\n');
const target = { a: 1, b: 2 };
const handler = {
get(obj, prop) {
return prop in obj ? obj[prop] : 'default';
}
};
const proxy = new Proxy(target, handler);
test('proxy get existing', proxy.a, 1);
test('proxy get missing', proxy.c, 'default');
const setHandler = {
set(obj, prop, value) {
obj[prop] = value * 2;
return true;
}
};
const setProxy = new Proxy({}, setHandler);
setProxy.x = 5;
test('proxy set', setProxy.x, 10);
const hasHandler = {
has(obj, prop) {
return prop.startsWith('_') ? false : prop in obj;
}
};
const hasProxy = new Proxy({ _private: 1, public: 2 }, hasHandler);
test('proxy has public', 'public' in hasProxy, true);
test('proxy has private', '_private' in hasProxy, false);
const deleteHandler = {
deleteProperty(obj, prop) {
if (prop.startsWith('_')) return false;
delete obj[prop];
return true;
}
};
const delProxy = new Proxy({ _keep: 1, remove: 2 }, deleteHandler);
delete delProxy.remove;
delete delProxy._keep;
test('proxy delete allowed', delProxy.remove, undefined);
test('proxy delete blocked', delProxy._keep, 1);
const revocable = Proxy.revocable({ x: 1 }, {});
test('revocable proxy get', revocable.proxy.x, 1);
revocable.revoke();
summary();

File Metadata

Mime Type
application/javascript
Expires
Fri, Mar 27, 4:19 AM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
512642
Default Alt Text
proxy.js (1 KB)

Event Timeline