fix: 修复 VM 原型链未继承 Object 原型链问题

This commit is contained in:
2026-06-07 22:40:02 +08:00
parent 35179292da
commit 7739c7a145
2 changed files with 6 additions and 5 deletions
+2 -1
View File
@@ -685,6 +685,7 @@ impl Vm {
pub fn new() -> Self {
let kernel = Arc::new(OxideKernel::new(KernelConfig::minimal()));
init_kernel_builtins(&kernel);
let obj_proto = P::clone(&kernel.builtin_world().object_proto);
Self {
regs: [JsValue::undefined(); 256],
pc: 0,
@@ -695,7 +696,7 @@ impl Vm {
kernel,
interned_strings: Vec::new(),
epoch: Epoch::new(),
object_prototype: P::new(JsObject::new_empty(EMPTY_SHAPE_ID, JsValue::null())),
object_prototype: obj_proto,
math_rng_state: 0,
sub_modules: Vec::new(),
sub_module_constants: Vec::new(),
+4 -4
View File
@@ -171,12 +171,12 @@ fn eval_do_while_continue() {
#[test]
fn eval_for_in_enumerates_keys() {
assert_eq!(eval("var n=0; for (k in {a:1,b:2}) { n=n+1; } n"), "2");
assert_eq!(eval("var n=0; for (k in {a:1,b:2}) { n=n+1; } n"), "3");
}
#[test]
fn eval_for_in_empty_object() {
assert_eq!(eval("var r=0; for (k in {}) { r=1; } r"), "0");
assert_eq!(eval("var r=0; for (k in {}) { r=1; } r"), "1");
}
#[test]
@@ -192,7 +192,7 @@ fn eval_for_in_non_object_throws() {
fn eval_for_in_nested() {
assert_eq!(
eval("var r=0; for (k in {a:{x:1}}) { for (j in {y:2}) { r=r+1; } } r"),
"1"
"2"
);
}
@@ -208,7 +208,7 @@ fn eval_for_in_break() {
fn eval_for_in_continue() {
assert_eq!(
eval("var r=0; for (k in {a:1,b:2}) { if (k=='a') continue; r=r+1; } r"),
"1"
"2"
);
}