mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-23 06:10:02 +08:00
- Add exact 64-bit and pointer ABIs, static node:ffi bindings, and Darwin framework linking. - Support native memory views and reusable callback pools with checked conversions and lifetime handling. - Preserve the JavaScript values, accessors, and module bindings used during renderer initialization.
27 lines
958 B
JavaScript
27 lines
958 B
JavaScript
function make(raw) {
|
|
let pointer = raw.pointer;
|
|
const object = {
|
|
get pointer() { return pointer; },
|
|
set pointer(value) { pointer = value; },
|
|
get alive() { return pointer !== null; },
|
|
close() { pointer = null; },
|
|
};
|
|
return object;
|
|
}
|
|
const value = make(JSON.parse('{"pointer":42}'));
|
|
console.log(value.pointer, value.alive, Object.keys(value).join(','));
|
|
value.pointer = 99;
|
|
console.log(value.pointer);
|
|
value.close();
|
|
console.log(value.pointer, value.alive);
|
|
let calls = 0;
|
|
const key = JSON.parse('"x"');
|
|
const mixed = {get [key]() {calls++; return 7;}, [key]: 8};
|
|
console.log(mixed.x,calls);
|
|
const spread = {get x() {return 0;}, set x(value) {calls++;}, ...JSON.parse('{"x":10}')};
|
|
console.log(spread.x, calls, Object.getOwnPropertyDescriptor(spread, "x").writable);
|
|
spread.x = 11;
|
|
console.log(spread.x, calls);
|
|
const getterSpread = {get [key]() {throw new Error("replaced");}, ...JSON.parse('{"x":12}')};
|
|
console.log(getterSpread.x);
|