javascript - 与 function.call 一起使用时的 this 值,给出意外的输出

标签 javascript

我正在学习 javascript,我试图理解与 apply/call 一起使用时的概念,但我陷入了这段代码中。

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{ }

最佳答案

the output is giving a string object as expected

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

but why the string is shown as an array of string.

因为String objects类似于数组,索引上有 .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}

关于javascript - 与 function.call 一起使用时的 this 值,给出意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25080552/

相关文章:

javascript - *ngFor 使用异步管道进行本地分配并减少订阅数量

javascript - javascript 中的 Scriptlet 和 scriptlet 中的 js 变量

javascript - 如何强制全屏播放视频?

javascript - Charles Proxy 和 Interceptor 没有在 Ubuntu 中跟踪任何 http 请求

javascript - jquery遍历DOM寻找连续值

javascript - 为什么不在我的 iPad 上加载第一个图像

在 html 中显示 Javascript 数组值

Javascript数组,删除相同的组合数字但顺序不同

javascript - 在 javascript 中设置子字符串的样式

javascript - 与该页面内的 iframe 共享页面的全局 javascript 变量