38 lines
743 B
JavaScript
38 lines
743 B
JavaScript
function assert(a, e, m) {
|
|
if (a !== e)
|
|
throw new Error(m);
|
|
}
|
|
|
|
function assertArrayContent(a, e) {
|
|
assert(a.length, e.length, "Size of arrays doesn't match");
|
|
for (var i = 0; i < a.length; i++)
|
|
assert(a[i], e[i], "a[" + i + "] = " + a[i] + " but e[" + i + "] = " + e[i]);
|
|
}
|
|
|
|
let arr = [];
|
|
|
|
class ProxyBase {
|
|
constructor() {
|
|
return new Proxy(this, {
|
|
get: function (obj, prop) {
|
|
arr.push(prop);
|
|
return obj[prop];
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
class Test extends ProxyBase {
|
|
#f = 3;
|
|
method() {
|
|
return this.#f;
|
|
}
|
|
}
|
|
|
|
let t = new Test();
|
|
let r = t.method();
|
|
assert(r, 3, "Expected: 3 but got: " + r);
|
|
|
|
assertArrayContent(arr, ['method']);
|
|
|