javascript字符串被解释为对象

时间:2014-05-01 17:19:34

标签: javascript string

从生产角度来看可能无关紧要,但我想知道为什么这样做会有所不同。字符串文字被解释为一个对象。

function fancyCallback(callback) {
  callback(this);
  console.log(typeof this); // just to see it really is an object
}

fancyCallback.call('string here', console.log);

我必须致电

this.toString()
如果我想要预期的输出,在函数内部

。我知道字符串是javascript中的对象(这很可爱),但在简单的console.log('abc')中,它们自然被解释为字符串。这是为什么?这有用吗?请忽略fancyCallback在全局范围内定义的事实!

1 个答案:

答案 0 :(得分:6)

来自MDN call()

  

thisArg

     

为乐趣召唤提供的价值。请注意这一点   可能不是方法看到的实际值:如果方法是a   在非严格模式代码中的函数,null和undefined将被替换   使用全局对象, 原始值将加框

Primitives [aka numbers / strings]被放入一个容器对象中,所以它就像你看到它一样工作。

所以它基本上是做什么

> var x = "string";
> typeof x
"string"
> var temp = new String(x);
> typeof temp
"object"