mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +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
	
	 Andreas Kling
						Andreas Kling