我正在学习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{ }
答案 0 :(得分:3)
输出正在按预期给出一个字符串对象
只是因为你正在使用草率模式。在严格模式下,它将是一个原始字符串值。
但为什么字符串显示为字符串数组。
因为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}