1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00

LibJS: Allow Function objects to be constructed with a bound |this|

value and bound arguments

This allows Function objects produced by Function.prototype.bind, as well
as arrow functions to track their |this| values and bound arguments.
This commit is contained in:
Jack Karamanian 2020-04-19 14:42:00 -05:00 committed by Andreas Kling
parent 6a66207efa
commit 5750edd859
2 changed files with 36 additions and 1 deletions

View file

@ -30,10 +30,30 @@
namespace JS {
Function::Function(Object& prototype)
: Object(&prototype)
: Function(prototype, {}, {})
{
}
Function::Function(Object& prototype, Optional<Value> bound_this, Vector<Value> bound_arguments)
: Object(&prototype)
, m_bound_this(bound_this)
, m_bound_arguments(move(bound_arguments))
{
}
void Function::visit_children(Visitor& visitor)
{
Object::visit_children(visitor);
if (m_bound_this.has_value()) {
visitor.visit(m_bound_this.value());
}
for (auto argument : m_bound_arguments) {
visitor.visit(argument);
}
}
Function::~Function()
{
}