29 lines
732 B
JavaScript
29 lines
732 B
JavaScript
function assert(b) {
|
|
if (!b)
|
|
throw new Error;
|
|
}
|
|
|
|
assert(JSON.stringify(JSON.parse('[1337,42]', function (x, y) {
|
|
if (this instanceof Array) {
|
|
Object.defineProperty(this, '1', {value: Array.prototype});
|
|
return y;
|
|
}
|
|
return this;
|
|
})) === '{"":[1337,[]]}');
|
|
|
|
assert(JSON.stringify(JSON.parse('[0, 1]', function(x, y) {
|
|
this[1] = Array.prototype;
|
|
return y;
|
|
})) === '[0,[]]');
|
|
|
|
assert(JSON.stringify(JSON.parse('{"x":22, "y":44}', function(a, b) {
|
|
this.y = Array.prototype;
|
|
return b;
|
|
})) === '{"x":22,"y":[]}');
|
|
|
|
Array.prototype[0] = 42;
|
|
assert(JSON.stringify(JSON.parse('{"x":22, "y":44}', function(a, b) {
|
|
this.y = Array.prototype;
|
|
return b;
|
|
})) === '{"x":22,"y":[42]}');
|