Struct v8::PropertyCallbackArguments
source · pub struct PropertyCallbackArguments<'s> { /* private fields */ }
Implementations§
source§impl<'s> PropertyCallbackArguments<'s>
impl<'s> PropertyCallbackArguments<'s>
sourcepub fn this(&self) -> Local<'s, Object>
pub fn this(&self) -> Local<'s, Object>
Returns the receiver. In many cases, this is the object on which the
property access was intercepted. When using
Reflect.get
, Function.prototype.call
, or similar functions, it is the
object passed in as receiver or thisArg.
void GetterCallback(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) {
auto context = info.GetIsolate()->GetCurrentContext();
v8::Local<v8::Value> a_this =
info.This()
->GetRealNamedProperty(context, v8_str("a"))
.ToLocalChecked();
v8::Local<v8::Value> a_holder =
info.Holder()
->GetRealNamedProperty(context, v8_str("a"))
.ToLocalChecked();
CHECK(v8_str("r")->Equals(context, a_this).FromJust());
CHECK(v8_str("obj")->Equals(context, a_holder).FromJust());
info.GetReturnValue().Set(name);
}
v8::Local<v8::FunctionTemplate> templ =
v8::FunctionTemplate::New(isolate);
templ->InstanceTemplate()->SetHandler(
v8::NamedPropertyHandlerConfiguration(GetterCallback));
LocalContext env;
env->Global()
->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
.ToLocalChecked()
->NewInstance(env.local())
.ToLocalChecked())
.FromJust();
CompileRun("obj.a = 'obj'; var r = {a: 'r'}; Reflect.get(obj, 'x', r)");