js_varscope_defineprop
JavaScript
class TestA {}
for (let i = 0; i < 2; i++) {
let cA = 0;
for (let j = 0; j < 2; j++) {
Object.defineProperty(TestA.prototype, 'prop_' + i + "_" + j, {
get() { return "val_" + i + "_" + j + ":" + cA; }
});
cA++;
}
}
tA = new TestA();
for (let i = 0; i < 2; i++) {
let cA = 0;
for (let j = 0; j < 2; j++) {
console.log(
"not-really-but-lets-say-expected", "val_" + i + "_" + j + ":" + cA,
"got", tA["prop_" + i + "_" + j]
);
cA++;
}
}
class TestB {}
for (let i = 0; i < 2; i++) {
let cA = 0;
for (let j = 0; j < 2; j++) {
let cB = cA;
Object.defineProperty(TestB.prototype, 'prop_' + i + "_" + j, {
get() { return "val_" + i + "_" + j + ":" + cB; }
});
cA++;
}
}
tB = new TestB();
for (let i = 0; i < 2; i++) {
let cB = 0;
for (let j = 0; j < 2; j++) {
console.log(
"not-really-but-lets-say-expected", "val_" + i + "_" + j + ":" + cB,
"got", tB["prop_" + i + "_" + j]
);
cB++;
}
}