1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 21:58:12 +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

@ -40,12 +40,27 @@ public:
virtual const FlyString& name() const = 0;
virtual LexicalEnvironment* create_environment() = 0;
virtual void visit_children(Visitor&) override;
Optional<Value> bound_this() const
{
return m_bound_this;
}
const Vector<Value>& bound_arguments() const
{
return m_bound_arguments;
}
protected:
explicit Function(Object& prototype);
explicit Function(Object& prototype, Optional<Value> bound_this, Vector<Value> bound_arguments);
virtual const char* class_name() const override { return "Function"; }
private:
virtual bool is_function() const final { return true; }
Optional<Value> m_bound_this;
Vector<Value> m_bound_arguments;
};
}