mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:07:35 +00:00
LibJS: Make Object::to_string() call the "toString" property if present
This commit is contained in:
parent
a7b21ec0f4
commit
8bfee015bc
4 changed files with 13 additions and 2 deletions
|
@ -205,6 +205,14 @@ Value Object::to_primitive(PreferredType preferred_type) const
|
|||
|
||||
Value Object::to_string() const
|
||||
{
|
||||
auto to_string_property = get("toString");
|
||||
if (to_string_property.has_value()
|
||||
&& to_string_property.value().is_object()
|
||||
&& to_string_property.value().as_object().is_function()) {
|
||||
auto& to_string_function = static_cast<Function&>(to_string_property.value().as_object());
|
||||
return const_cast<Object*>(this)->interpreter().call(&to_string_function, const_cast<Object*>(this));
|
||||
}
|
||||
return js_string(heap(), String::format("[object %s]", class_name()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ Value ObjectPrototype::to_string(Interpreter& interpreter)
|
|||
auto* this_object = interpreter.this_value().to_object(interpreter.heap());
|
||||
if (!this_object)
|
||||
return {};
|
||||
return Value(this_object->to_string());
|
||||
return js_string(interpreter, String::format("[object %s]", this_object->class_name()));
|
||||
}
|
||||
|
||||
Value ObjectPrototype::value_of(Interpreter& interpreter)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue