mirror of
https://github.com/RGBCube/serenity
synced 2025-05-16 23:15:07 +00:00
LibJS: Add Function.prototype and make "new" Objects delegate to it
This commit is contained in:
parent
0593ce406b
commit
37fe16a99c
2 changed files with 6 additions and 0 deletions
|
@ -83,6 +83,9 @@ Value CallExpression::execute(Interpreter& interpreter) const
|
||||||
Object* new_object = nullptr;
|
Object* new_object = nullptr;
|
||||||
if (is_new_expression()) {
|
if (is_new_expression()) {
|
||||||
new_object = interpreter.heap().allocate<Object>();
|
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;
|
call_frame.this_value = new_object;
|
||||||
} else {
|
} else {
|
||||||
if (m_callee->is_member_expression()) {
|
if (m_callee->is_member_expression()) {
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* 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/Function.h>
|
||||||
#include <LibJS/Runtime/Value.h>
|
#include <LibJS/Runtime/Value.h>
|
||||||
|
|
||||||
|
@ -31,6 +33,7 @@ namespace JS {
|
||||||
|
|
||||||
Function::Function()
|
Function::Function()
|
||||||
{
|
{
|
||||||
|
put("prototype", heap().allocate<Object>());
|
||||||
}
|
}
|
||||||
|
|
||||||
Function::~Function()
|
Function::~Function()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue