我以前认为这两个作业a = "foo"
和a = new String('foo')
是同一个东西。但是对于前一个声明,console.log(a instanceof Object)
或console.log(a instanceof String)
返回false
,而它返回后者的预期true
。
这看起来很奇怪,原因有两个。首先,即使是普通的声明a = 'foo'
,所有的字符串方法都在它上面工作,这表明它是从String
对象继承的。其次,a.constructor
返回String
。
任何人都可以解释发生了什么吗?