Index: include/v8.h |
diff --git a/include/v8.h b/include/v8.h |
index fcd1baf5840376519a7816a180b6b211b6578828..77affcff2c7a8c25974d8db76f198215cbf46680 100644 |
--- a/include/v8.h |
+++ b/include/v8.h |
@@ -3248,6 +3248,47 @@ class PropertyCallbackInfo { |
*/ |
V8_INLINE Local<Value> Data() const; |
+ /** |
+ * \return 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. |
+ * |
+ * \code |
+ * 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)"); |
+ * \endcode |
+ */ |
V8_INLINE Local<Object> This() const; |
/** |