pub struct Obj {
pub props: PropMap<Value>,
pub accessors: PropMap<Accessor>,
pub attrs: PropMap<PropertyAttributes>,
pub proto: Option<ObjRef>,
pub kind: ObjKind,
pub frozen: bool,
pub sealed: bool,
pub non_extensible: bool,
pub null_proto: bool,
}Expand description
ヒープオブジェクト本体。名前付きプロパティ + プロトタイプ + 種別。
Fields§
§props: PropMap<Value>§accessors: PropMap<Accessor>Object.defineProperty で登録された getter/setter。
attrs: PropMap<PropertyAttributes>§proto: Option<ObjRef>§kind: ObjKind§frozen: boolObject.freeze() 済みか。真なら set_property/delete によるプロパティの
追加・変更・削除を無視する(非 strict モード相当の黙殺。Object.isFrozen() が読む)。
sealed: boolObject.seal() 済みか。真なら新規プロパティの追加・既存プロパティの削除を無視する
(既存プロパティの値の変更は許可。frozen はこれも自動的に含意する)。
non_extensible: boolObject.preventExtensions() 済みか。真なら新規プロパティの追加のみを禁止する
(削除・既存値の変更は許可。sealed/frozen はこれも自動的に含意する)。
null_proto: boolObject.create(null)/Object.groupBy()等、仕様上[[Prototype]]が
nullと明示されたオブジェクトか。proto: Noneだけでは「明示的に
nullプロトタイプ」なのか「単に通常オブジェクトでprotoチェーンが
尽きた」なのかをget_propertyの共通メソッドフォールバック
(interp/properties.rsのobject_get呼び出し)が区別できず、
Object.create(null).hasOwnProperty等がフォールバック経由で
誤って動いてしまうバグがあった(2026-07-18 発見・実装)。
Implementations§
Source§impl Obj
impl Obj
pub fn plain() -> ObjRef
pub fn array(items: Vec<Value>) -> ObjRef
pub fn function(data: FunctionData) -> ObjRef
pub fn native(name: &str, func: NativeFn) -> ObjRef
pub fn host(tag: &str) -> ObjRef
pub fn dom(node_idx: usize) -> ObjRef
pub fn map_obj(entries: Vec<(Value, Value)>) -> ObjRef
pub fn set_obj(items: Vec<Value>) -> ObjRef
pub fn promise(state: Rc<RefCell<PromiseState>>) -> ObjRef
pub fn resolver(state: Rc<RefCell<PromiseState>>, reject: bool) -> ObjRef
pub fn generator(state: GenState) -> ObjRef
pub fn regexp(data: RegExpData) -> ObjRef
pub fn proxy(target: ObjRef, handler: ObjRef) -> ObjRef
pub fn date_obj(epoch_ms: f64) -> ObjRef
pub fn bound(target: Value, bound_this: Value, bound_args: Vec<Value>) -> ObjRef
pub fn is_callable(&self) -> bool
Auto Trait Implementations§
impl !RefUnwindSafe for Obj
impl !Send for Obj
impl !Sync for Obj
impl !UnwindSafe for Obj
impl Freeze for Obj
impl Unpin for Obj
impl UnsafeUnpin for Obj
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more