#include <v8-object.h>
Static Public Member Functions | |
static int | InternalFieldCount (const PersistentBase< Object > &object) |
static int | InternalFieldCount (const BasicTracedReference< Object > &object) |
static void * | GetAlignedPointerFromInternalField (const PersistentBase< Object > &object, int index) |
static void * | GetAlignedPointerFromInternalField (const BasicTracedReference< Object > &object, int index) |
static MaybeLocal< Context > | GetCreationContext (const PersistentBase< Object > &object) |
static Isolate * | GetIsolate (const TracedReference< Object > &handle) |
static Local< Object > | New (Isolate *isolate) |
static Local< Object > | New (Isolate *isolate, Local< Value > prototype_or_null, Local< Name > *names, Local< Value > *values, size_t length) |
static Object * | Cast (Value *obj) |
![]() | |
template<class T > | |
static Value * | Cast (T *value) |
A JavaScript object (ECMA-262, 4.3.3)
MaybeLocal< Value > v8::Object::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.
MaybeLocal< Value > v8::Object::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.
Clone this object with a fast but shallow copy. Values will point to the same values as the original object.
Maybe< bool > v8::Object::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.
Maybe< bool > v8::Object::CreateDataProperty | ( | Local< Context > | context, |
uint32_t | index, | ||
Local< Value > | value | ||
) |
Maybe< bool > v8::Object::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.
Maybe< bool > v8::Object::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.
Local< Object > v8::Object::FindInstanceInPrototypeChain | ( | Local< FunctionTemplate > | tmpl | ) |
Finds an instance of the given function template in the prototype chain.
MaybeLocal< Value > v8::Object::Get | ( | Local< Context > | context, |
uint32_t | index | ||
) |
void * v8::Object::GetAlignedPointerFromEmbedderDataInCreationContext | ( | 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().
|
inlinestatic |
Same as above, but works for TracedReference.
|
inlinestatic |
Same as above, but works for PersistentBase.
|
inline |
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.
|
inline |
Returns the name of the function invoked as a constructor for this object.
MaybeLocal< Context > v8::Object::GetCreationContext | ( | ) |
Returns the context in which the object was created.
|
inlinestatic |
Same as above, but works for Persistents
Shortcut for GetCreationContext().ToLocalChecked().
int v8::Object::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.
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.
|
inlinestatic |
MaybeLocal< Value > v8::Object::GetOwnPropertyDescriptor | ( | Local< Context > | context, |
Local< Name > | key | ||
) |
Implements Object.getOwnPropertyDescriptor(O, P), see https://tc39.es/ecma262/#sec-object.getownpropertydescriptor.
MaybeLocal< Array > v8::Object::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.
MaybeLocal< Array > v8::Object::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.
Maybe< PropertyAttribute > v8::Object::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.
MaybeLocal< Array > v8::Object::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.
MaybeLocal< Array > v8::Object::GetPropertyNames | ( | Local< Context > | context, |
KeyCollectionMode | mode, | ||
PropertyFilter | property_filter, | ||
IndexFilter | index_filter, | ||
KeyConversionMode | key_conversion = KeyConversionMode::kKeepNumbers |
||
) |
Get the prototype object. This does not skip objects marked to be skipped by proto and it does not consult the security handler.
MaybeLocal< Value > v8::Object::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.
Maybe< PropertyAttribute > v8::Object::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.
Maybe< PropertyAttribute > v8::Object::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.
MaybeLocal< Value > v8::Object::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.
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.
See also v8::Object::HasOwnProperty() and v8::Object::HasRealNamedProperty().
bool v8::Object::HasIndexedLookupInterceptor | ( | ) | const |
Tests for an index lookup interceptor.
bool v8::Object::HasNamedLookupInterceptor | ( | ) | const |
Tests for a named lookup interceptor.
HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty().
See also v8::Object::Has() and v8::Object::HasRealNamedProperty().
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.
Maybe< bool > v8::Object::HasRealNamedCallbackProperty | ( | 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.
v8::PropertyHandlerFlags::kNonMasking
.See also v8::Object::Has().
int v8::Object::InternalFieldCount | ( | ) | const |
Gets the number of internal fields for this Object.
|
inlinestatic |
Same as above, but works for BasicTracedReference.
|
inlinestatic |
Same as above, but works for PersistentBase.
bool v8::Object::IsApiWrapper | ( | ) | const |
True if this object can carry information relevant to the embedder in its embedder fields, false otherwise. This is generally true for objects constructed through function templates but also holds for other types where V8 automatically adds internal fields at compile time, such as e.g. v8::ArrayBuffer.
bool v8::Object::IsCallable | ( | ) | const |
Checks whether a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. When an Object is callable this method returns true.
bool v8::Object::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
bool v8::Object::IsConstructor | ( | ) | const |
True if this object is a constructor.
bool v8::Object::IsUndetectable | ( | ) | const |
True if this object was created from an object template which was marked as undetectable. See v8::ObjectTemplate::MarkAsUndetectable for more information.
|
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.
MaybeLocal< String > v8::Object::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.
MaybeLocal< Array > v8::Object::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).
Maybe< bool > v8::Object::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().
Maybe< bool > v8::Object::SetAccessor | ( | Local< Context > | context, |
Local< Name > | name, | ||
AccessorNameGetterCallback | getter, | ||
AccessorNameSetterCallback | setter = nullptr , |
||
MaybeLocal< Value > | data = MaybeLocal< Value >() , |
||
AccessControl | deprecated_settings = DEFAULT , |
||
PropertyAttribute | attribute = None , |
||
SideEffectType | getter_side_effect_type = SideEffectType::kHasSideEffect , |
||
SideEffectType | setter_side_effect_type = SideEffectType::kHasSideEffect |
||
) |
void v8::Object::SetAccessorProperty | ( | Local< Name > | name, |
Local< Function > | getter, | ||
Local< Function > | setter = Local< Function >() , |
||
PropertyAttribute | attributes = None |
||
) |
void v8::Object::SetAlignedPointerInInternalField | ( | int | index, |
void * | value | ||
) |
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.
void v8::Object::SetAlignedPointerInInternalFields | ( | int | argc, |
int | indices[], | ||
void * | values[] | ||
) |
Maybe< bool > v8::Object::SetIntegrityLevel | ( | Local< Context > | context, |
IntegrityLevel | level | ||
) |
Sets the integrity level of the object.
Sets the data in an internal field.
Maybe< bool > v8::Object::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 |
||
) |
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.
Maybe< bool > v8::Object::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 |
||
) |
Sets a native data property like Template::SetNativeDataProperty, but this method sets on this object directly.
Maybe< bool > v8::Object::SetPrivate | ( | Local< Context > | context, |
Local< Private > | key, | ||
Local< Value > | value | ||
) |
Set the prototype object. This does not skip objects marked to be skipped by proto and it does not consult the security handler.