v8::Value::ToDetailString() 函数有什么用?
What is v8::Value::ToDetailString() function for?
我找不到此功能的任何说明。
即使在 v8 源分析之后,我仍然不清楚,因为
它以“RETURN_NATIVE_CALL(to_detail_string...
”结尾,我在我的资源中找不到 to_detail_string
。
这里应该是关于这个函数的文档:
https://v8docs.nodesource.com/io.js-3.0/dc/d0a/classv8_1_1_value.html#a2f9770296dc2c8d274bc8cc0dca243e5
Copy/paste 来自 v8 来源:
V8_WARN_UNUSED_RESULT MaybeLocal<String> ToDetailString(
Local<Context> context) const;
MaybeLocal<String> Value::ToDetailString(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
if (obj->IsString()) return ToApiHandle<String>(obj);
PREPARE_FOR_EXECUTION(context, "ToDetailString", String);
Local<String> result;
has_pending_exception =
!ToLocal<String>(i::Execution::ToDetailString(isolate, obj), &result);
RETURN_ON_FAILED_EXECUTION(String);
RETURN_ESCAPED(result);
}
MaybeHandle<Object> Execution::ToDetailString(
Isolate* isolate, Handle<Object> obj) {
RETURN_NATIVE_CALL(to_detail_string, { obj });
}
有人可以提供任何提示或文档链接吗?
我可以调用它并查看结果,但我希望答案中包含一些有用的信息和链接。
这由 ToDetailString 在 messages.js 中实现。
函数定义来自 v8/src/messages.js:
function ToDetailString(obj) {
if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) {
var constructor = obj.constructor;
if (typeof constructor == "function") {
var constructorName = constructor.name;
if (IS_STRING(constructorName) && constructorName !== "") {
return "#<" + constructorName + ">";
}
}
}
return ToStringCheckErrorObject(obj);
}
另请参阅此处的讨论片段:
http://logs.nodejs.org/v8/2013-02-05
ToDetailString prints #<constructor name> if the object to be printed
doesn't have a custom toString method.
ToString prints [object <class of object>].
ToDetailString also handles error objects differently.
我找不到此功能的任何说明。
即使在 v8 源分析之后,我仍然不清楚,因为
它以“RETURN_NATIVE_CALL(to_detail_string...
”结尾,我在我的资源中找不到 to_detail_string
。
这里应该是关于这个函数的文档: https://v8docs.nodesource.com/io.js-3.0/dc/d0a/classv8_1_1_value.html#a2f9770296dc2c8d274bc8cc0dca243e5
Copy/paste 来自 v8 来源:
V8_WARN_UNUSED_RESULT MaybeLocal<String> ToDetailString(
Local<Context> context) const;
MaybeLocal<String> Value::ToDetailString(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
if (obj->IsString()) return ToApiHandle<String>(obj);
PREPARE_FOR_EXECUTION(context, "ToDetailString", String);
Local<String> result;
has_pending_exception =
!ToLocal<String>(i::Execution::ToDetailString(isolate, obj), &result);
RETURN_ON_FAILED_EXECUTION(String);
RETURN_ESCAPED(result);
}
MaybeHandle<Object> Execution::ToDetailString(
Isolate* isolate, Handle<Object> obj) {
RETURN_NATIVE_CALL(to_detail_string, { obj });
}
有人可以提供任何提示或文档链接吗?
我可以调用它并查看结果,但我希望答案中包含一些有用的信息和链接。
这由 ToDetailString 在 messages.js 中实现。
函数定义来自 v8/src/messages.js:
function ToDetailString(obj) {
if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) {
var constructor = obj.constructor;
if (typeof constructor == "function") {
var constructorName = constructor.name;
if (IS_STRING(constructorName) && constructorName !== "") {
return "#<" + constructorName + ">";
}
}
}
return ToStringCheckErrorObject(obj);
}
另请参阅此处的讨论片段:
http://logs.nodejs.org/v8/2013-02-05
ToDetailString prints #<constructor name> if the object to be printed
doesn't have a custom toString method.
ToString prints [object <class of object>].
ToDetailString also handles error objects differently.