与函数一起使用时this的值.调用产生意外输出

value of this when used with function.call giving unexpected output

本文关键字:调用 意外 输出 的值 this 一起 函数      更新时间:2023-09-26

我正在学习javascript,我试图理解这与应用/调用时使用的概念,但我被困在这个代码。

foo = function(){
  console.log(this)
}
foo.call("random")

输出是一个字符串对象,但为什么字符串显示为字符串数组。

String { 0="r", 1="a", 2="n", 3="d", 4="o", 5="m" }

我所期望的是。

String{ }

就是数字

的情况
foo.call(121)

其中输出为

Number{ }

输出是一个字符串对象,如预期的

只是因为你使用了草率模式。在严格模式下,它将是一个基本字符串值。

但为什么字符串显示为字符串数组

因为String对象是类似数组的,在它们的下标上有一个.length和单个字符串。然而,控制台显示的方式取决于实现:

// Chrome
String {0: "r", 1: "a", 2: "n", 3: "d", 4: "o", 5: "m", length: 6}
// Firefox
String { 0="r", 1="a", 2="n", more...}
// Opera
[+] String
// IE
▷ [object String]{0: "r", 1: "a", 2: "n", 3: "d", 4: "o", 5: "m", length: 6}