用途:该技能面向在 Bun 源码中使用 JavaScriptCore(JSC)以 C++ 实现 JavaScript 类的场景,适用于新增带 C++ 绑定的 JS 类、原型或构造器。
主要能力:说明公开构造器与原型需创建的三个类(Foo 继承 JSC::DestructibleObject、FooPrototype 继承 JSC::JSNonFinalObject、FooConstructor 继承 JSC::InternalFunction);无公开构造器时只需 Prototype 与类。若类含 C++ 字段,需在 src/jsc/bindings/webcore/DOMClientIsoSubspaces.h 与 DOMIsoSubspaces.h 中提供子空间,subspaceForImpl 仅内联读取槽位,实际子空间由 src/jsc/bindings/BunClientData.cpp 的 subspaceForImplSlow 创建。属性通过 HashTableValue 表定义,支持自定义 getter 与宿主函数,并在 finishCreation 中以 reifyStaticProperties 挂载。构造器类在 finishCreation 中设置 prototype 属性。类结构需在 ZigGlobalObject.h 声明 LazyClassStructure、在 ZigGlobalObject.cpp 初始化、在 visitChildrenImpl 中访问,并通过 extern "C" 函数暴露给 Zig;C++ 文件顶部需包含 #include "root.h"。
使用方式:按资料中的类结构、属性表、getter/函数宏(JSC_DEFINE_CUSTOM_GETTER、JSC_DEFINE_HOST_FUNCTION)和结构缓存模式编写代码,并保持命令与代码原样。
限制:资料未提供具体安装命令、收费、平台或效果信息;实现细节(如错误抛出辅助函数、字段访问器)需依赖 Bun 现有代码约定,本文不保证可直接编译。