* Update super property get/set/call in loose mode Follows the plan laid out in https://github.com/babel/babel/pull/7553#issuecomment-381434519. With #7691, this closes #7553, closes #4312. * Post #7772 * Memoized property
42 lines
595 B
JavaScript
42 lines
595 B
JavaScript
"use strict";
|
|
class Base {}
|
|
Object.defineProperty(Base.prototype, 0, {
|
|
value: 0,
|
|
writable: true,
|
|
configurable: true,
|
|
});
|
|
Object.defineProperty(Base.prototype, 1, {
|
|
value: 1,
|
|
writable: true,
|
|
configurable: true,
|
|
});
|
|
|
|
let i = 0;
|
|
const proper = {
|
|
get prop() {
|
|
return i++;
|
|
},
|
|
};
|
|
|
|
class Obj extends Base {
|
|
assign() {
|
|
super[proper.prop] += 1;
|
|
}
|
|
|
|
assign2() {
|
|
super[i] += 1;
|
|
}
|
|
}
|
|
|
|
const obj = new Obj();
|
|
|
|
obj.assign();
|
|
expect(i).toBe(1);
|
|
expect(obj[0]).toBe(1);
|
|
expect(obj[1]).toBe(1);
|
|
|
|
obj.assign2();
|
|
expect(i).toBe(1);
|
|
expect(obj[0]).toBe(1);
|
|
expect(obj[1]).toBe(2);
|