mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
fix: 修复 VM 原型链未继承 Object 原型链问题
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user