ObjectPrototype.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <andreas@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibJS/Runtime/Completion.h>
  8. #include <LibJS/Runtime/Object.h>
  9. namespace JS {
  10. class ObjectPrototype final : public Object {
  11. JS_OBJECT(ObjectPrototype, Object);
  12. GC_DECLARE_ALLOCATOR(ObjectPrototype);
  13. public:
  14. virtual void initialize(Realm&) override;
  15. virtual ~ObjectPrototype() override = default;
  16. // 10.4.7 Immutable Prototype Exotic Objects, https://tc39.es/ecma262/#sec-immutable-prototype-exotic-objects
  17. virtual ThrowCompletionOr<bool> internal_set_prototype_of(Object* prototype) override;
  18. // public to serve as intrinsic function %Object.prototype.toString%
  19. JS_DECLARE_NATIVE_FUNCTION(to_string);
  20. private:
  21. explicit ObjectPrototype(Realm&);
  22. JS_DECLARE_NATIVE_FUNCTION(has_own_property);
  23. JS_DECLARE_NATIVE_FUNCTION(to_locale_string);
  24. JS_DECLARE_NATIVE_FUNCTION(value_of);
  25. JS_DECLARE_NATIVE_FUNCTION(property_is_enumerable);
  26. JS_DECLARE_NATIVE_FUNCTION(is_prototype_of);
  27. JS_DECLARE_NATIVE_FUNCTION(define_getter);
  28. JS_DECLARE_NATIVE_FUNCTION(define_setter);
  29. JS_DECLARE_NATIVE_FUNCTION(lookup_getter);
  30. JS_DECLARE_NATIVE_FUNCTION(lookup_setter);
  31. JS_DECLARE_NATIVE_FUNCTION(proto_getter);
  32. JS_DECLARE_NATIVE_FUNCTION(proto_setter);
  33. };
  34. }