mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 08:36:15 +00:00
LibJS: Add Function.prototype and make "new" Objects delegate to it
This commit is contained in:
@@ -83,6 +83,9 @@ Value CallExpression::execute(Interpreter& interpreter) const
|
||||
Object* new_object = nullptr;
|
||||
if (is_new_expression()) {
|
||||
new_object = interpreter.heap().allocate<Object>();
|
||||
auto prototype = function->get("prototype");
|
||||
if (prototype.has_value() && prototype.value().is_object())
|
||||
new_object->set_prototype(prototype.value().as_object());
|
||||
call_frame.this_value = new_object;
|
||||
} else {
|
||||
if (m_callee->is_member_expression()) {
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/FlyString.h>
|
||||
#include <LibJS/Heap/Heap.h>
|
||||
#include <LibJS/Runtime/Function.h>
|
||||
#include <LibJS/Runtime/Value.h>
|
||||
|
||||
@@ -31,6 +33,7 @@ namespace JS {
|
||||
|
||||
Function::Function()
|
||||
{
|
||||
put("prototype", heap().allocate<Object>());
|
||||
}
|
||||
|
||||
Function::~Function()
|
||||
|
||||
Reference in New Issue
Block a user