Serenity Operating System
at master 53 lines 1.8 kB view raw
1/* 2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> 3 * Copyright (c) 2020-2022, Linus Groh <linusg@serenityos.org> 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <LibJS/Runtime/NativeFunction.h> 11 12namespace JS { 13 14class ObjectConstructor final : public NativeFunction { 15 JS_OBJECT(ObjectConstructor, NativeFunction); 16 17public: 18 virtual ThrowCompletionOr<void> initialize(Realm&) override; 19 virtual ~ObjectConstructor() override = default; 20 21 virtual ThrowCompletionOr<Value> call() override; 22 virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target) override; 23 24private: 25 explicit ObjectConstructor(Realm&); 26 27 virtual bool has_constructor() const override { return true; } 28 29 JS_DECLARE_NATIVE_FUNCTION(define_property); 30 JS_DECLARE_NATIVE_FUNCTION(define_properties); 31 JS_DECLARE_NATIVE_FUNCTION(is); 32 JS_DECLARE_NATIVE_FUNCTION(get_own_property_descriptor); 33 JS_DECLARE_NATIVE_FUNCTION(get_own_property_descriptors); 34 JS_DECLARE_NATIVE_FUNCTION(get_own_property_names); 35 JS_DECLARE_NATIVE_FUNCTION(get_own_property_symbols); 36 JS_DECLARE_NATIVE_FUNCTION(get_prototype_of); 37 JS_DECLARE_NATIVE_FUNCTION(set_prototype_of); 38 JS_DECLARE_NATIVE_FUNCTION(is_extensible); 39 JS_DECLARE_NATIVE_FUNCTION(is_frozen); 40 JS_DECLARE_NATIVE_FUNCTION(is_sealed); 41 JS_DECLARE_NATIVE_FUNCTION(prevent_extensions); 42 JS_DECLARE_NATIVE_FUNCTION(seal); 43 JS_DECLARE_NATIVE_FUNCTION(freeze); 44 JS_DECLARE_NATIVE_FUNCTION(from_entries); 45 JS_DECLARE_NATIVE_FUNCTION(keys); 46 JS_DECLARE_NATIVE_FUNCTION(values); 47 JS_DECLARE_NATIVE_FUNCTION(entries); 48 JS_DECLARE_NATIVE_FUNCTION(create); 49 JS_DECLARE_NATIVE_FUNCTION(has_own); 50 JS_DECLARE_NATIVE_FUNCTION(assign); 51}; 52 53}