gpt4 book ai didi

javascript - "[object Object]"中小写字母与大写字母所暗示的控制台区别

转载 作者:行者123 更新时间:2023-11-27 22:45:58 26 4
gpt4 key购买 nike

我没有发现任何关于这种微妙但看似重要的区别的引用。我的问题是关于控制台的对象与对象的大小写。

例如:

function Person(name) {
this.name = name;
}
var bob = new Person("Bob");

console.log(bob.name); // Bob --as desired.

但是,

console.log(bob); // [object Object]

我的问题并不是关于我的代码的逻辑,而是关于控制台的消息。

“object”和“Object”这两个词的大小写有什么区别?

这个问题的答案可能使我和其他人能够牢牢掌握控制台试图指示的内容。

最佳答案

在您的例子中,您的 bob 对象通过 toString 方法转换为字符串,该方法由 ES6 规范定义如下:

<强> ES6: Object.prototype.toString ( ):

When the toString method is called, the following steps are taken:

  1. If the this value is undefined, return "[object Undefined]".
  2. If the this value is null, return "[object Null]".
  3. Let O be ToObject(this value).
  4. Let isArray be IsArray(O).
  5. ReturnIfAbrupt(isArray).
  6. If isArray is true, let builtinTag be "Array".
  7. Else, if O is an exotic String object, let builtinTag be "String".
  8. Else, if O has an [[ParameterMap]] internal slot, let builtinTag be "Arguments".
  9. Else, if O has a [[Call]] internal method, let builtinTag be "Function".
  10. Else, if O has an [[ErrorData]] internal slot, let builtinTag be "Error".
  11. Else, if O has a [[BooleanData]] internal slot, let builtinTag be "Boolean".
  12. Else, if O has a [[NumberData]] internal slot, let builtinTag be "Number".
  13. Else, if O has a [[DateValue]] internal slot, let builtinTag be "Date".
  14. Else, if O has a [[RegExpMatcher]] internal slot, let builtinTag be "RegExp".
  15. Else, let builtinTag be "Object".
  16. Let tag be Get (O, @@toStringTag).
  17. ReturnIfAbrupt(tag).
  18. If Type(tag) is not String, let tag be builtinTag.
  19. Return the String that is the result of concatenating "[object ", tag, and "]".

基本上,规范规定创建一个如下所示的字符串:"[object "+ InternalClassName + "]",其中 InternalClassName 是对象的 native 构造函数,Object 在你的情况下。第一个是小写,因为规范说使用该字符串,第二个是大写,因为这是 native 构造函数的名称。

关于javascript - "[object Object]"中小写字母与大写字母所暗示的控制台区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com