v8 14.1.146 (node 25.0.0)
V8 is Google's open source JavaScript engine
Loading...
Searching...
No Matches
Object Class Reference

#include <v8-object.h>

Inheritance diagram for Object:
Collaboration diagram for Object:

Data Structures

class  Wrappable
 
struct  WrapperTypeInfo
 

Public Member Functions

V8_WARN_UNUSED_RESULT Maybe< bool > Set (Local< Context > context, Local< Value > key, Local< Value > value)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Set (Local< Context > context, Local< Value > key, Local< Value > value, MaybeLocal< Object > receiver)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Set (Local< Context > context, uint32_t index, Local< Value > value)
 
V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty (Local< Context > context, Local< Name > key, Local< Value > value)
 
V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty (Local< Context > context, uint32_t index, Local< Value > value)
 
V8_WARN_UNUSED_RESULT Maybe< bool > DefineOwnProperty (Local< Context > context, Local< Name > key, Local< Value > value, PropertyAttribute attributes=None)
 
V8_WARN_UNUSED_RESULT Maybe< bool > DefineProperty (Local< Context > context, Local< Name > key, PropertyDescriptor &descriptor)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGet (Local< Context > context, Local< Value > key)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGet (Local< Context > context, Local< Value > key, MaybeLocal< Object > receiver)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGet (Local< Context > context, uint32_t index)
 
V8_WARN_UNUSED_RESULT Maybe< PropertyAttributeGetPropertyAttributes (Local< Context > context, Local< Value > key)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGetOwnPropertyDescriptor (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Has (Local< Context > context, Local< Value > key)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Delete (Local< Context > context, Local< Value > key)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Has (Local< Context > context, uint32_t index)
 
V8_WARN_UNUSED_RESULT Maybe< bool > Delete (Local< Context > context, uint32_t index)
 
void SetAccessorProperty (Local< Name > name, Local< Function > getter, Local< Function > setter=Local< Function >(), PropertyAttribute attributes=None)
 
V8_WARN_UNUSED_RESULT Maybe< bool > SetNativeDataProperty (Local< Context > context, Local< Name > name, AccessorNameGetterCallback getter, AccessorNameSetterCallback setter=nullptr, Local< Value > data=Local< Value >(), PropertyAttribute attributes=None, SideEffectType getter_side_effect_type=SideEffectType::kHasSideEffect, SideEffectType setter_side_effect_type=SideEffectType::kHasSideEffect)
 
V8_WARN_UNUSED_RESULT Maybe< bool > SetLazyDataProperty (Local< Context > context, Local< Name > name, AccessorNameGetterCallback getter, Local< Value > data=Local< Value >(), PropertyAttribute attributes=None, SideEffectType getter_side_effect_type=SideEffectType::kHasSideEffect, SideEffectType setter_side_effect_type=SideEffectType::kHasSideEffect)
 
Maybe< bool > HasPrivate (Local< Context > context, Local< Private > key)
 
Maybe< bool > SetPrivate (Local< Context > context, Local< Private > key, Local< Value > value)
 
Maybe< bool > DeletePrivate (Local< Context > context, Local< Private > key)
 
MaybeLocal< ValueGetPrivate (Local< Context > context, Local< Private > key)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ArrayGetPropertyNames (Local< Context > context)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ArrayGetPropertyNames (Local< Context > context, KeyCollectionMode mode, PropertyFilter property_filter, IndexFilter index_filter, KeyConversionMode key_conversion=KeyConversionMode::kKeepNumbers)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ArrayGetOwnPropertyNames (Local< Context > context)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ArrayGetOwnPropertyNames (Local< Context > context, PropertyFilter filter, KeyConversionMode key_conversion=KeyConversionMode::kKeepNumbers)
 
 V8_DEPRECATED ("V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use GetPrototypeV2() instead. " "See http://crbug.com/333672197.") Local< Value > GetPrototype()
 
Local< ValueGetPrototypeV2 ()
 
 V8_DEPRECATED ("V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use SetPrototypeV2() instead. " "See http://crbug.com/333672197.") V8_WARN_UNUSED_RESULT Maybe< bool > SetPrototype(Local< Context > context
 
V8_WARN_UNUSED_RESULT Maybe< bool > SetPrototypeV2 (Local< Context > context, Local< Value > prototype)
 
Local< ObjectFindInstanceInPrototypeChain (Local< FunctionTemplate > tmpl)
 
V8_WARN_UNUSED_RESULT MaybeLocal< StringObjectProtoToString (Local< Context > context)
 
Local< StringGetConstructorName ()
 
Maybe< bool > SetIntegrityLevel (Local< Context > context, IntegrityLevel level)
 
int InternalFieldCount () const
 
V8_INLINE Local< DataGetInternalField (int index)
 
void SetInternalField (int index, Local< Data > data)
 
V8_INLINE void * GetAlignedPointerFromInternalField (int index)
 
V8_INLINE void * GetAlignedPointerFromInternalField (v8::Isolate *isolate, int index)
 
 V8_DEPRECATE_SOON ("Use SetAlignedPointerInInternalField with EmbedderDataTypeTag parameter " "instead.") void SetAlignedPointerInInternalField(int index
 
void SetAlignedPointerInInternalField (int index, void *value, EmbedderDataTypeTag tag)
 
 V8_DEPRECATE_SOON ("Use SetAlignedPointerInInternalField with EmbedderDataTypeTag " "parameter instead.") void SetAlignedPointerInInternalFields(int argc
 
V8_WARN_UNUSED_RESULT Maybe< bool > HasOwnProperty (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT Maybe< bool > HasOwnProperty (Local< Context > context, uint32_t index)
 
V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedProperty (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT Maybe< bool > HasRealIndexedProperty (Local< Context > context, uint32_t index)
 
V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedCallbackProperty (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGetRealNamedPropertyInPrototypeChain (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT Maybe< PropertyAttributeGetRealNamedPropertyAttributesInPrototypeChain (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueGetRealNamedProperty (Local< Context > context, Local< Name > key)
 
V8_WARN_UNUSED_RESULT Maybe< PropertyAttributeGetRealNamedPropertyAttributes (Local< Context > context, Local< Name > key)
 
bool HasNamedLookupInterceptor () const
 
bool HasIndexedLookupInterceptor () const
 
int GetIdentityHash ()
 
Local< ObjectClone (v8::Isolate *isolate)
 
Local< ObjectClone ()
 
MaybeLocal< ContextGetCreationContext (v8::Isolate *isolate)
 
MaybeLocal< ContextGetCreationContext ()
 
Local< ContextGetCreationContextChecked (v8::Isolate *isolate)
 
Local< ContextGetCreationContextChecked ()
 
void * GetAlignedPointerFromEmbedderDataInCreationContext (v8::Isolate *isolate, int index)
 
void * GetAlignedPointerFromEmbedderDataInCreationContext (int index)
 
bool IsCallable () const
 
bool IsConstructor () const
 
bool IsApiWrapper () const
 
bool IsUndetectable () const
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueCallAsFunction (Local< Context > context, Local< Value > recv, int argc, Local< Value > argv[])
 
V8_WARN_UNUSED_RESULT MaybeLocal< ValueCallAsConstructor (Local< Context > context, int argc, Local< Value > argv[])
 
 V8_DEPRECATED ("Use Isolate::GetCurrent() instead, which is guaranteed to return the " "same isolate since https://crrev.com/c/6458560.") Isolate *GetIsolate()
 
 V8_DEPRECATED ("Use Isolate::GetCurrent() instead, which is guaranteed to return the " "same isolate since https://crrev.com/c/6458560.") V8_INLINE static Isolate *GetIsolate(const TracedReference< Object > &handle)
 
MaybeLocal< ArrayPreviewEntries (bool *is_key_value)
 
bool IsCodeLike (Isolate *isolate) const
 
template<CppHeapPointerTag tag, typename T >
T * Unwrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper)
 
template<CppHeapPointerTag tag, typename T >
T * Unwrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper)
 
template<CppHeapPointerTag tag, typename T >
T * Unwrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper)
 
template<typename T >
T * Unwrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<typename T >
T * Unwrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<typename T >
T * Unwrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<CppHeapPointerTag tag>
void Wrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, v8::Object::Wrappable *wrappable)
 
template<CppHeapPointerTag tag>
void Wrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper, v8::Object::Wrappable *wrappable)
 
template<CppHeapPointerTag tag>
void Wrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper, v8::Object::Wrappable *wrappable)
 
- Public Member Functions inherited from Value
V8_INLINE bool IsUndefined () const
 
V8_INLINE bool IsNull () const
 
V8_INLINE bool IsNullOrUndefined () const
 
V8_INLINE bool IsTrue () const
 
V8_INLINE bool IsFalse () const
 
bool IsName () const
 
V8_INLINE bool IsString () const
 
bool IsSymbol () const
 
bool IsFunction () const
 
bool IsArray () const
 
bool IsObject () const
 
bool IsBigInt () const
 
bool IsBoolean () const
 
bool IsNumber () const
 
bool IsExternal () const
 
bool IsInt32 () const
 
bool IsUint32 () const
 
bool IsDate () const
 
bool IsArgumentsObject () const
 
bool IsBigIntObject () const
 
bool IsBooleanObject () const
 
bool IsNumberObject () const
 
bool IsStringObject () const
 
bool IsSymbolObject () const
 
bool IsNativeError () const
 
bool IsRegExp () const
 
bool IsAsyncFunction () const
 
bool IsGeneratorFunction () const
 
bool IsGeneratorObject () const
 
bool IsPromise () const
 
bool IsMap () const
 
bool IsSet () const
 
bool IsMapIterator () const
 
bool IsSetIterator () const
 
bool IsWeakMap () const
 
bool IsWeakSet () const
 
bool IsWeakRef () const
 
bool IsArrayBuffer () const
 
bool IsArrayBufferView () const
 
bool IsTypedArray () const
 
bool IsUint8Array () const
 
bool IsUint8ClampedArray () const
 
bool IsInt8Array () const
 
bool IsUint16Array () const
 
bool IsInt16Array () const
 
bool IsUint32Array () const
 
bool IsInt32Array () const
 
bool IsFloat16Array () const
 
bool IsFloat32Array () const
 
bool IsFloat64Array () const
 
bool IsBigInt64Array () const
 
bool IsBigUint64Array () const
 
bool IsDataView () const
 
bool IsSharedArrayBuffer () const
 
bool IsProxy () const
 
bool IsWasmMemoryObject () const
 
bool IsWasmMemoryMapDescriptor () const
 
bool IsWasmModuleObject () const
 
bool IsWasmNull () const
 
bool IsModuleNamespaceObject () const
 
bool IsPrimitive () const
 
V8_WARN_UNUSED_RESULT MaybeLocal< PrimitiveToPrimitive (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< NumericToNumeric (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< BigIntToBigInt (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< NumberToNumber (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< StringToString (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< StringToDetailString (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< ObjectToObject (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< IntegerToInteger (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< Uint32ToUint32 (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< Int32ToInt32 (Local< Context > context) const
 
Local< BooleanToBoolean (Isolate *isolate) const
 
V8_WARN_UNUSED_RESULT MaybeLocal< Uint32ToArrayIndex (Local< Context > context) const
 
bool BooleanValue (Isolate *isolate) const
 
V8_WARN_UNUSED_RESULT Maybe< double > NumberValue (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT Maybe< int64_t > IntegerValue (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT Maybe< uint32_t > Uint32Value (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT Maybe< int32_t > Int32Value (Local< Context > context) const
 
V8_WARN_UNUSED_RESULT Maybe< bool > Equals (Local< Context > context, Local< Value > that) const
 
bool StrictEquals (Local< Value > that) const
 
bool SameValue (Local< Value > that) const
 
Local< StringTypeOf (Isolate *)
 
Maybe< bool > InstanceOf (Local< Context > context, Local< Object > object)
 
uint32_t GetHash ()
 
template<>
V8_INLINE ValueCast (Data *value)
 
- Public Member Functions inherited from Data
bool IsValue () const
 
bool IsModule () const
 
bool IsModuleRequest () const
 
bool IsFixedArray () const
 
bool IsPrivate () const
 
bool IsObjectTemplate () const
 
bool IsFunctionTemplate () const
 
bool IsContext () const
 
bool IsCppHeapExternal () const
 

Static Public Member Functions

static V8_INLINE int InternalFieldCount (const PersistentBase< Object > &object)
 
static V8_INLINE int InternalFieldCount (const BasicTracedReference< Object > &object)
 
static V8_INLINE void * GetAlignedPointerFromInternalField (const PersistentBase< Object > &object, int index)
 
static V8_INLINE void * GetAlignedPointerFromInternalField (const BasicTracedReference< Object > &object, int index)
 
template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper)
 
template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper)
 
template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper)
 
template<typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<typename T = void>
static V8_INLINE T * Unwrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper, CppHeapPointerTagRange tag_range)
 
template<CppHeapPointerTag tag>
static V8_INLINE void Wrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, Wrappable *wrappable)
 
template<CppHeapPointerTag tag>
static V8_INLINE void Wrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper, Wrappable *wrappable)
 
template<CppHeapPointerTag tag>
static V8_INLINE void Wrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper, Wrappable *wrappable)
 
static V8_INLINE void Wrap (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, Wrappable *wrappable, CppHeapPointerTag tag)
 
static V8_INLINE void Wrap (v8::Isolate *isolate, const PersistentBase< Object > &wrapper, Wrappable *wrappable, CppHeapPointerTag tag)
 
static V8_INLINE void Wrap (v8::Isolate *isolate, const BasicTracedReference< Object > &wrapper, Wrappable *wrappable, CppHeapPointerTag tag)
 
static void WrapGlobal (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, Wrappable *wrappable, CppHeapPointerTag tag)
 
static bool CheckGlobalWrappable (v8::Isolate *isolate, const v8::Local< v8::Object > &wrapper, CppHeapPointerTagRange tag_range)
 
static V8_INLINE MaybeLocal< ContextGetCreationContext (v8::Isolate *isolate, const PersistentBase< Object > &object)
 
static V8_INLINE MaybeLocal< ContextGetCreationContext (const PersistentBase< Object > &object)
 
static Local< ObjectNew (Isolate *isolate)
 
static Local< ObjectNew (Isolate *isolate, Local< Value > prototype_or_null, Local< Name > *names, Local< Value > *values, size_t length)
 
static V8_INLINE ObjectCast (Value *obj)
 
- Static Public Member Functions inherited from Value
template<class T >
static V8_INLINE ValueCast (T *value)
 

Data Fields

Local< Valueprototype
 
void * value
 
int indices []
 
int void * values []
 

Detailed Description

A JavaScript object (ECMA-262, 4.3.3)

Definition at line 243 of file v8-object.h.

Member Function Documentation

◆ CallAsConstructor()

V8_WARN_UNUSED_RESULT MaybeLocal< Value > CallAsConstructor ( Local< Context context,
int  argc,
Local< Value argv[] 
)

Call an Object as a constructor if a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. Note: This method behaves like the Function::NewInstance method.

◆ CallAsFunction()

V8_WARN_UNUSED_RESULT MaybeLocal< Value > CallAsFunction ( Local< Context context,
Local< Value recv,
int  argc,
Local< Value argv[] 
)

Call an Object as a function if a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method.

◆ Cast()

Object * Cast ( v8::Value value)
static

Definition at line 1132 of file v8-object.h.

◆ CheckGlobalWrappable()

static bool CheckGlobalWrappable ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)
static

◆ Clone() [1/2]

Local< Object > Clone ( )

◆ Clone() [2/2]

Local< Object > Clone ( v8::Isolate isolate)

Clone this object with a fast but shallow copy. Values will point to the same values as the original object.

Prefer using version with Isolate parameter.

◆ CreateDataProperty() [1/2]

V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty ( Local< Context context,
Local< Name key,
Local< Value value 
)

Implements CreateDataProperty(O, P, V), see https://tc39.es/ecma262/#sec-createdataproperty.

Defines a configurable, writable, enumerable property with the given value on the object unless the property already exists and is not configurable or the object is not extensible.

Returns true on success.

◆ CreateDataProperty() [2/2]

V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty ( Local< Context context,
uint32_t  index,
Local< Value value 
)

◆ DefineOwnProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > DefineOwnProperty ( Local< Context context,
Local< Name key,
Local< Value value,
PropertyAttribute  attributes = None 
)

Implements [[DefineOwnProperty]] for data property case, see https://tc39.es/ecma262/#table-essential-internal-methods.

In general, CreateDataProperty will be faster, however, does not allow for specifying attributes.

Returns true on success.

◆ DefineProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > DefineProperty ( Local< Context context,
Local< Name key,
PropertyDescriptor descriptor 
)

Implements Object.defineProperty(O, P, Attributes), see https://tc39.es/ecma262/#sec-object.defineproperty.

The defineProperty function is used to add an own property or update the attributes of an existing own property of an object.

Both data and accessor descriptors can be used.

In general, CreateDataProperty is faster, however, does not allow for specifying attributes or an accessor descriptor.

The PropertyDescriptor can change when redefining a property.

Returns true on success.

◆ Delete() [1/2]

V8_WARN_UNUSED_RESULT Maybe< bool > Delete ( Local< Context context,
Local< Value key 
)

◆ Delete() [2/2]

V8_WARN_UNUSED_RESULT Maybe< bool > Delete ( Local< Context context,
uint32_t  index 
)

◆ DeletePrivate()

Maybe< bool > DeletePrivate ( Local< Context context,
Local< Private key 
)

◆ FindInstanceInPrototypeChain()

Local< Object > FindInstanceInPrototypeChain ( Local< FunctionTemplate tmpl)

Finds an instance of the given function template in the prototype chain.

◆ Get() [1/3]

V8_WARN_UNUSED_RESULT MaybeLocal< Value > Get ( Local< Context context,
Local< Value key 
)

◆ Get() [2/3]

V8_WARN_UNUSED_RESULT MaybeLocal< Value > Get ( Local< Context context,
Local< Value key,
MaybeLocal< Object receiver 
)

◆ Get() [3/3]

V8_WARN_UNUSED_RESULT MaybeLocal< Value > Get ( Local< Context context,
uint32_t  index 
)

◆ GetAlignedPointerFromEmbedderDataInCreationContext() [1/2]

void * GetAlignedPointerFromEmbedderDataInCreationContext ( int  index)

◆ GetAlignedPointerFromEmbedderDataInCreationContext() [2/2]

void * GetAlignedPointerFromEmbedderDataInCreationContext ( v8::Isolate isolate,
int  index 
)

Gets the context in which the object was created (see GetCreationContext()) and if it's available reads respective embedder field value. If the context can't be obtained nullptr is returned. Basically it's a shortcut for obj->GetCreationContext().GetAlignedPointerFromEmbedderData(index) which doesn't create a handle for Context object on the way and doesn't try to expand the embedder data attached to the context. In case the Local<Context> is already available because of other reasons, it's fine to keep using Context::GetAlignedPointerFromEmbedderData().

Prefer using version with Isolate parameter if you have an Isolate, otherwise use the other one.

◆ GetAlignedPointerFromInternalField() [1/4]

static V8_INLINE void * GetAlignedPointerFromInternalField ( const BasicTracedReference< Object > &  object,
int  index 
)
inlinestatic

Same as above, but works for TracedReference.

Definition at line 546 of file v8-object.h.

◆ GetAlignedPointerFromInternalField() [2/4]

static V8_INLINE void * GetAlignedPointerFromInternalField ( const PersistentBase< Object > &  object,
int  index 
)
inlinestatic

Same as above, but works for PersistentBase.

Definition at line 539 of file v8-object.h.

◆ GetAlignedPointerFromInternalField() [3/4]

void * GetAlignedPointerFromInternalField ( int  index)

Gets a 2-byte-aligned native pointer from an internal field. This field must have been set by SetAlignedPointerInInternalField, everything else leads to undefined behavior.

Definition at line 966 of file v8-object.h.

References Internals::CanHaveInternalField(), Internals::GetCurrentIsolateForSandbox(), Internals::GetInstanceType(), Internals::kEmbedderDataSlotExternalPointerOffset, Internals::kEmbedderDataSlotSize, v8::internal::kFirstEmbedderDataTag, Internals::kJSAPIObjectWithEmbedderSlotsHeaderSize, and v8::internal::kLastEmbedderDataTag.

◆ GetAlignedPointerFromInternalField() [4/4]

◆ GetConstructorName()

Local< String > GetConstructorName ( )

Returns the name of the function invoked as a constructor for this object.

◆ GetCreationContext() [1/4]

MaybeLocal< Context > GetCreationContext ( )

◆ GetCreationContext() [2/4]

static V8_INLINE MaybeLocal< Context > GetCreationContext ( const PersistentBase< Object > &  object)
static

◆ GetCreationContext() [3/4]

MaybeLocal< Context > GetCreationContext ( v8::Isolate isolate)

Returns the context in which the object was created.

Prefer using version with Isolate parameter.

◆ GetCreationContext() [4/4]

static V8_INLINE MaybeLocal< Context > GetCreationContext ( v8::Isolate isolate,
const PersistentBase< Object > &  object 
)
inlinestatic

Same as above, but works for Persistents

Definition at line 776 of file v8-object.h.

◆ GetCreationContextChecked() [1/2]

Local< Context > GetCreationContextChecked ( )

◆ GetCreationContextChecked() [2/2]

Local< Context > GetCreationContextChecked ( v8::Isolate isolate)

Shortcut for GetCreationContext(...).ToLocalChecked().

Prefer using version with Isolate parameter.

◆ GetIdentityHash()

int GetIdentityHash ( )

Returns the identity hash for this object. The current implementation uses a hidden property on the object to store the identity hash.

The return value will never be 0. Also, it is not guaranteed to be unique.

◆ GetInternalField()

Local< Data > GetInternalField ( int  index)

Gets the data from an internal field. To cast the return value into v8::Value subtypes, it needs to be casted to a v8::Value first. For example, to cast it into v8::External:

object->GetInternalField(index).As<v8::Value>().As<v8::External>();

The embedder should make sure that the internal field being retrieved using this method has already been set with SetInternalField() before.

Definition at line 918 of file v8-object.h.

References Internals::CanHaveInternalField(), Internals::GetCurrentIsolate(), Internals::GetInstanceType(), Internals::kEmbedderDataSlotSize, and Internals::kJSAPIObjectWithEmbedderSlotsHeaderSize.

◆ GetOwnPropertyDescriptor()

V8_WARN_UNUSED_RESULT MaybeLocal< Value > GetOwnPropertyDescriptor ( Local< Context context,
Local< Name key 
)

Implements Object.getOwnPropertyDescriptor(O, P), see https://tc39.es/ecma262/#sec-object.getownpropertydescriptor.

◆ GetOwnPropertyNames() [1/2]

V8_WARN_UNUSED_RESULT MaybeLocal< Array > GetOwnPropertyNames ( Local< Context context)

This function has the same functionality as GetPropertyNames but the returned array doesn't contain the names of properties from prototype objects.

◆ GetOwnPropertyNames() [2/2]

V8_WARN_UNUSED_RESULT MaybeLocal< Array > GetOwnPropertyNames ( Local< Context context,
PropertyFilter  filter,
KeyConversionMode  key_conversion = KeyConversionMode::kKeepNumbers 
)

Returns an array containing the names of the filtered properties of this object, including properties from prototype objects. The array returned by this method contains the same values as would be enumerated by a for-in statement over this object.

◆ GetPrivate()

MaybeLocal< Value > GetPrivate ( Local< Context context,
Local< Private key 
)

◆ GetPropertyAttributes()

V8_WARN_UNUSED_RESULT Maybe< PropertyAttribute > GetPropertyAttributes ( Local< Context context,
Local< Value key 
)

Gets the property attributes of a property which can be None or any combination of ReadOnly, DontEnum and DontDelete. Returns None when the property doesn't exist.

◆ GetPropertyNames() [1/2]

V8_WARN_UNUSED_RESULT MaybeLocal< Array > GetPropertyNames ( Local< Context context)

Returns an array containing the names of the enumerable properties of this object, including properties from prototype objects. The array returned by this method contains the same values as would be enumerated by a for-in statement over this object.

◆ GetPropertyNames() [2/2]

V8_WARN_UNUSED_RESULT MaybeLocal< Array > GetPropertyNames ( Local< Context context,
KeyCollectionMode  mode,
PropertyFilter  property_filter,
IndexFilter  index_filter,
KeyConversionMode  key_conversion = KeyConversionMode::kKeepNumbers 
)

◆ GetPrototypeV2()

Local< Value > GetPrototypeV2 ( )

Get the prototype object (same as calling Object.getPrototypeOf(..)). This does not consult the security handler. TODO(333672197): rename back to GetPrototype() once the old version goes through the deprecation process and is removed.

◆ GetRealNamedProperty()

V8_WARN_UNUSED_RESULT MaybeLocal< Value > GetRealNamedProperty ( Local< Context context,
Local< Name key 
)

If result.IsEmpty() no real property was located on the object or in the prototype chain. This means interceptors in the prototype chain are not called.

◆ GetRealNamedPropertyAttributes()

V8_WARN_UNUSED_RESULT Maybe< PropertyAttribute > GetRealNamedPropertyAttributes ( Local< Context context,
Local< Name key 
)

Gets the property attributes of a real property which can be None or any combination of ReadOnly, DontEnum and DontDelete. Interceptors in the prototype chain are not called.

◆ GetRealNamedPropertyAttributesInPrototypeChain()

V8_WARN_UNUSED_RESULT Maybe< PropertyAttribute > GetRealNamedPropertyAttributesInPrototypeChain ( Local< Context context,
Local< Name key 
)

Gets the property attributes of a real property in the prototype chain, which can be None or any combination of ReadOnly, DontEnum and DontDelete. Interceptors in the prototype chain are not called.

◆ GetRealNamedPropertyInPrototypeChain()

V8_WARN_UNUSED_RESULT MaybeLocal< Value > GetRealNamedPropertyInPrototypeChain ( Local< Context context,
Local< Name key 
)

If result.IsEmpty() no real property was located in the prototype chain. This means interceptors in the prototype chain are not called.

◆ Has() [1/2]

V8_WARN_UNUSED_RESULT Maybe< bool > Has ( Local< Context context,
Local< Value key 
)

Object::Has() calls the abstract operation HasProperty(O, P), see https://tc39.es/ecma262/#sec-hasproperty. Has() returns true, if the object has the property, either own or on the prototype chain. Interceptors, i.e., PropertyQueryCallbacks, are called if present.

Has() has the same side effects as JavaScript's variable in object. For example, calling Has() on a revoked proxy will throw an exception.

Note
Has() converts the key to a name, which possibly calls back into JavaScript.

See also v8::Object::HasOwnProperty() and v8::Object::HasRealNamedProperty().

◆ Has() [2/2]

V8_WARN_UNUSED_RESULT Maybe< bool > Has ( Local< Context context,
uint32_t  index 
)

◆ HasIndexedLookupInterceptor()

bool HasIndexedLookupInterceptor ( ) const

Tests for an index lookup interceptor.

◆ HasNamedLookupInterceptor()

bool HasNamedLookupInterceptor ( ) const

Tests for a named lookup interceptor.

◆ HasOwnProperty() [1/2]

V8_WARN_UNUSED_RESULT Maybe< bool > HasOwnProperty ( Local< Context context,
Local< Name key 
)

HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty().

See also v8::Object::Has() and v8::Object::HasRealNamedProperty().

◆ HasOwnProperty() [2/2]

V8_WARN_UNUSED_RESULT Maybe< bool > HasOwnProperty ( Local< Context context,
uint32_t  index 
)

◆ HasPrivate()

Maybe< bool > HasPrivate ( Local< Context context,
Local< Private key 
)

Functionality for private properties. This is an experimental feature, use at your own risk. Note: Private properties are not inherited. Do not rely on this, since it may change.

◆ HasRealIndexedProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > HasRealIndexedProperty ( Local< Context context,
uint32_t  index 
)

◆ HasRealNamedCallbackProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedCallbackProperty ( Local< Context context,
Local< Name key 
)

◆ HasRealNamedProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedProperty ( Local< Context context,
Local< Name key 
)

Use HasRealNamedProperty() if you want to check if an object has an own property without causing side effects, i.e., without calling interceptors.

This function is similar to v8::Object::HasOwnProperty(), but it does not call interceptors.

Note
Consider using non-masking interceptors, i.e., the interceptors are not called if the receiver has the real named property. See v8::PropertyHandlerFlags::kNonMasking.

See also v8::Object::Has().

◆ InternalFieldCount() [1/3]

int InternalFieldCount ( ) const

Gets the number of internal fields for this Object.

◆ InternalFieldCount() [2/3]

static V8_INLINE int InternalFieldCount ( const BasicTracedReference< Object > &  object)
inlinestatic

Same as above, but works for BasicTracedReference.

Definition at line 509 of file v8-object.h.

◆ InternalFieldCount() [3/3]

static V8_INLINE int InternalFieldCount ( const PersistentBase< Object > &  object)
inlinestatic

Same as above, but works for PersistentBase.

Definition at line 503 of file v8-object.h.

◆ IsApiWrapper()

bool IsApiWrapper ( ) const

Returns true if this object can be generally used to wrap object objects. This means that the object either follows the convention of using embedder fields to denote type/instance pointers or is using the Wrap()/Unwrap() APIs for the same purpose. Returns false otherwise.

Note that there may be other objects that use embedder fields but are not used as API wrapper objects. E.g., v8::Promise may in certain configuration use embedder fields but promises are not generally supported as API wrappers. The method will return false in those cases.

◆ IsCallable()

bool IsCallable ( ) const

Checks whether a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. When an Object is callable this method returns true.

◆ IsCodeLike()

bool IsCodeLike ( Isolate isolate) const

Support for TC39 "dynamic code brand checks" proposal.

This API allows to query whether an object was constructed from a "code like" ObjectTemplate.

See also: v8::ObjectTemplate::SetCodeLike

◆ IsConstructor()

bool IsConstructor ( ) const

True if this object is a constructor.

◆ IsUndetectable()

bool IsUndetectable ( ) const

True if this object was created from an object template which was marked as undetectable. See v8::ObjectTemplate::MarkAsUndetectable for more information.

◆ New() [1/2]

static Local< Object > New ( Isolate isolate)
static

◆ New() [2/2]

static Local< Object > New ( Isolate isolate,
Local< Value prototype_or_null,
Local< Name > *  names,
Local< Value > *  values,
size_t  length 
)
static

Creates a JavaScript object with the given properties, and a the given prototype_or_null (which can be any JavaScript value, and if it's null, the newly created object won't have a prototype at all). This is similar to Object.create(). All properties will be created as enumerable, configurable and writable properties.

◆ ObjectProtoToString()

V8_WARN_UNUSED_RESULT MaybeLocal< String > ObjectProtoToString ( Local< Context context)

Call builtin Object.prototype.toString on this object. This is different from Value::ToString() that may call user-defined toString function. This one does not.

◆ PreviewEntries()

MaybeLocal< Array > PreviewEntries ( bool *  is_key_value)

If this object is a Set, Map, WeakSet or WeakMap, this returns a representation of the elements of this object as an array. If this object is a SetIterator or MapIterator, this returns all elements of the underlying collection, starting at the iterator's current position. For other types, this will return an empty MaybeLocal<Array> (without scheduling an exception).

◆ Set() [1/3]

V8_WARN_UNUSED_RESULT Maybe< bool > Set ( Local< Context context,
Local< Value key,
Local< Value value 
)

Set only return Just(true) or Empty(), so if it should never fail, use result.Check().

◆ Set() [2/3]

V8_WARN_UNUSED_RESULT Maybe< bool > Set ( Local< Context context,
Local< Value key,
Local< Value value,
MaybeLocal< Object receiver 
)

◆ Set() [3/3]

V8_WARN_UNUSED_RESULT Maybe< bool > Set ( Local< Context context,
uint32_t  index,
Local< Value value 
)

◆ SetAccessorProperty()

void SetAccessorProperty ( Local< Name name,
Local< Function getter,
Local< Function setter = LocalFunction >(),
PropertyAttribute  attributes = None 
)

Sets an accessor property like Template::SetAccessorProperty, but this method sets on this object directly.

◆ SetAlignedPointerInInternalField()

void SetAlignedPointerInInternalField ( int  index,
void *  value,
EmbedderDataTypeTag  tag 
)

◆ SetIntegrityLevel()

Maybe< bool > SetIntegrityLevel ( Local< Context context,
IntegrityLevel  level 
)

Sets the integrity level of the object.

◆ SetInternalField()

void SetInternalField ( int  index,
Local< Data data 
)

Sets the data in an internal field.

◆ SetLazyDataProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > SetLazyDataProperty ( Local< Context context,
Local< Name name,
AccessorNameGetterCallback  getter,
Local< Value data = LocalValue >(),
PropertyAttribute  attributes = None,
SideEffectType  getter_side_effect_type = SideEffectType::kHasSideEffect,
SideEffectType  setter_side_effect_type = SideEffectType::kHasSideEffect 
)

Attempts to create a property with the given name which behaves like a data property, except that the provided getter is invoked (and provided with the data value) to supply its value the first time it is read. After the property is accessed once, it is replaced with an ordinary data property.

Analogous to Template::SetLazyDataProperty.

◆ SetNativeDataProperty()

V8_WARN_UNUSED_RESULT Maybe< bool > SetNativeDataProperty ( Local< Context context,
Local< Name name,
AccessorNameGetterCallback  getter,
AccessorNameSetterCallback  setter = nullptr,
Local< Value data = LocalValue >(),
PropertyAttribute  attributes = None,
SideEffectType  getter_side_effect_type = SideEffectType::kHasSideEffect,
SideEffectType  setter_side_effect_type = SideEffectType::kHasSideEffect 
)

Sets a native data property like Template::SetNativeDataProperty, but this method sets on this object directly.

◆ SetPrivate()

Maybe< bool > SetPrivate ( Local< Context context,
Local< Private key,
Local< Value value 
)

◆ SetPrototypeV2()

V8_WARN_UNUSED_RESULT Maybe< bool > SetPrototypeV2 ( Local< Context context,
Local< Value prototype 
)

Set the prototype object (same as calling Object.setPrototypeOf(..)). This does not consult the security handler. TODO(333672197): rename back to SetPrototype() once the old version goes through the deprecation process and is removed.

◆ Unwrap() [1/12]

template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper 
)
static

◆ Unwrap() [2/12]

template<CppHeapPointerTag tag, typename T >
T * Unwrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper 
)

◆ Unwrap() [3/12]

template<typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)
static

◆ Unwrap() [4/12]

template<typename T >
T * Unwrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)

Definition at line 1061 of file v8-object.h.

References Internals::kJSObjectHeaderSize.

◆ Unwrap() [5/12]

template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper 
)
static

◆ Unwrap() [6/12]

template<CppHeapPointerTag tag, typename T >
T * Unwrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper 
)

◆ Unwrap() [7/12]

template<typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)
static

◆ Unwrap() [8/12]

template<typename T >
T * Unwrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)

Definition at line 1046 of file v8-object.h.

References Internals::kJSObjectHeaderSize.

◆ Unwrap() [9/12]

template<CppHeapPointerTag tag, typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper 
)
static

Unwraps a JS wrapper object.

Parameters
tagThe tag for retrieving the wrappable instance. Must match the tag that has been used for a previous Wrap() operation.
isolateThe Isolate for the wrapper object.
wrapperThe JS wrapper object that should be unwrapped.
Returns
the C++ wrappable instance, or nullptr if the JS object has never been wrapped.

◆ Unwrap() [10/12]

template<CppHeapPointerTag tag, typename T >
T * Unwrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper 
)

◆ Unwrap() [11/12]

template<typename T = void>
static V8_INLINE T * Unwrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)
static

◆ Unwrap() [12/12]

template<typename T >
T * Unwrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
CppHeapPointerTagRange  tag_range 
)

Definition at line 1033 of file v8-object.h.

References Internals::kJSObjectHeaderSize.

◆ V8_DEPRECATE_SOON() [1/2]

V8_DEPRECATE_SOON ( "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag " "parameter instead."  )

◆ V8_DEPRECATE_SOON() [2/2]

V8_DEPRECATE_SOON ( "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag parameter " "instead."  )

Sets a 2-byte-aligned native pointer in an internal field. To retrieve such a field, GetAlignedPointerFromInternalField must be used, everything else leads to undefined behavior.

◆ V8_DEPRECATED() [1/4]

V8_DEPRECATED ( "Use Isolate::GetCurrent()  instead,
which is guaranteed to return the " "same isolate since https://crrev.com/c/6458560."   
)

Return the isolate to which the Object belongs to.

◆ V8_DEPRECATED() [2/4]

V8_DEPRECATED ( "Use Isolate::GetCurrent()  instead,
which is guaranteed to return the " "same isolate since https://crrev.com/c/6458560."   
) const &
inline

Definition at line 859 of file v8-object.h.

◆ V8_DEPRECATED() [3/4]

V8_DEPRECATED ( "V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use GetPrototypeV2() instead. " "See http://crbug.com/333672197."  )

Get the prototype object. This does not skip objects marked to be skipped by proto and it does not consult the security handler.

◆ V8_DEPRECATED() [4/4]

V8_DEPRECATED ( "V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use SetPrototypeV2() instead. " "See http://crbug.com/333672197."  )

Set the prototype object. This does not skip objects marked to be skipped by proto and it does not consult the security handler.

◆ Wrap() [1/9]

template<CppHeapPointerTag tag>
void Wrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper,
v8::Object::Wrappable wrappable 
)

Definition at line 1093 of file v8-object.h.

◆ Wrap() [2/9]

template<CppHeapPointerTag tag>
static V8_INLINE void Wrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper,
Wrappable wrappable 
)
static

◆ Wrap() [3/9]

void Wrap ( v8::Isolate isolate,
const BasicTracedReference< Object > &  wrapper,
Wrappable wrappable,
CppHeapPointerTag  tag 
)
static

Definition at line 1117 of file v8-object.h.

◆ Wrap() [4/9]

template<CppHeapPointerTag tag>
void Wrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper,
v8::Object::Wrappable wrappable 
)

Definition at line 1084 of file v8-object.h.

◆ Wrap() [5/9]

template<CppHeapPointerTag tag>
static V8_INLINE void Wrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper,
Wrappable wrappable 
)
static

◆ Wrap() [6/9]

void Wrap ( v8::Isolate isolate,
const PersistentBase< Object > &  wrapper,
Wrappable wrappable,
CppHeapPointerTag  tag 
)
static

Definition at line 1109 of file v8-object.h.

◆ Wrap() [7/9]

template<CppHeapPointerTag tag>
void Wrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
v8::Object::Wrappable wrappable 
)

Definition at line 1076 of file v8-object.h.

◆ Wrap() [8/9]

template<CppHeapPointerTag tag>
static V8_INLINE void Wrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
Wrappable wrappable 
)
static

Wraps a JS wrapper with a C++ instance.

Parameters
tagThe pointer tag that should be used for storing this object. Future Unwrap() operations must provide a matching tag.
isolateThe Isolate for the wrapper object.
wrapperThe JS wrapper object.
wrappableThe C++ object instance that is wrapped by the JS object.

◆ Wrap() [9/9]

void Wrap ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
Wrappable wrappable,
CppHeapPointerTag  tag 
)
static

Definition at line 1102 of file v8-object.h.

◆ WrapGlobal()

static void WrapGlobal ( v8::Isolate isolate,
const v8::Local< v8::Object > &  wrapper,
Wrappable wrappable,
CppHeapPointerTag  tag 
)
static

Field Documentation

◆ indices

int indices[]

Definition at line 568 of file v8-object.h.

◆ prototype

Local<Value> prototype

Definition at line 464 of file v8-object.h.

◆ value

void* value

Definition at line 560 of file v8-object.h.

◆ values

int void* values[]

Definition at line 569 of file v8-object.h.


The documentation for this class was generated from the following file: