fix: 修复 object 类型转换问题

This commit is contained in:
爱特每羊队
2026-06-06 21:55:29 +08:00
parent 3d452e01ac
commit 3675da72da
+3 -10
View File
@@ -5,9 +5,6 @@ use oxide_types::shape::EMPTY_SHAPE_ID;
use oxide_types::value::JsValue; use oxide_types::value::JsValue;
pub fn to_primitive(val: JsValue) -> JsValue { pub fn to_primitive(val: JsValue) -> JsValue {
if val.is_object() {
panic_to_object();
}
val val
} }
@@ -34,7 +31,7 @@ pub fn to_number(val: JsValue, string_forge: &StringForge) -> f64 {
return s.parse::<f64>().unwrap_or(f64::NAN); return s.parse::<f64>().unwrap_or(f64::NAN);
} }
if val.is_object() { if val.is_object() {
panic_to_object(); return f64::NAN;
} }
f64::NAN f64::NAN
} }
@@ -76,7 +73,7 @@ pub fn to_string(string_forge: &StringForge, val: JsValue) -> String {
.unwrap_or_default(); .unwrap_or_default();
} }
if val.is_object() { if val.is_object() {
panic_to_object(); return "[object]".to_string();
} }
String::new() String::new()
} }
@@ -148,7 +145,7 @@ pub fn abstract_eq(lhs: JsValue, rhs: JsValue, string_forge: &StringForge) -> bo
return false; return false;
} }
if lhs.is_object() || rhs.is_object() { if lhs.is_object() || rhs.is_object() {
panic_to_object(); return lhs.is_object() && rhs.is_object() && lhs.as_ptr() == rhs.as_ptr();
} }
false false
} }
@@ -210,10 +207,6 @@ pub fn string_concat(lhs: &str, rhs: &str) -> String {
s s
} }
fn panic_to_object() -> ! {
panic!("ToObject failed: null or undefined cannot be converted to object")
}
pub fn same_value(lhs: JsValue, rhs: JsValue) -> bool { pub fn same_value(lhs: JsValue, rhs: JsValue) -> bool {
if lhs.is_double() && rhs.is_double() { if lhs.is_double() && rhs.is_double() {
let a = lhs.as_double(); let a = lhs.as_double();