我正在学习 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/