| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| class A { |
| get cocoa() { |
| return "Cocoa"; |
| } |
| |
| get cappuccino() { |
| return "Cappuccino"; |
| } |
| } |
| |
| let a = new A(); |
| shouldBe(JSON.stringify(a), `{}`); |
| shouldBe(JSON.stringify(a, ["cocoa", "cappuccino"]), `{"cocoa":"Cocoa","cappuccino":"Cappuccino"}`); |
| |
| let array = [0, 1, 2, 3, 4]; |
| Object.defineProperty(array.__proto__, 1, { |
| get: function () { |
| return "Cocoa"; |
| } |
| }); |
| Object.defineProperty(array, 0, { |
| get: function () { |
| delete array[1]; |
| return "Cappuccino"; |
| } |
| }); |
| shouldBe(JSON.stringify(array), `["Cappuccino","Cocoa",2,3,4]`); |