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;
|
||||
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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue