String是对象String()的一个实例吗?

时间:2013-11-12 22:16:56

标签: javascript

我目前正在学习javascript,还有一些我不理解的东西。

//This means that I am using a method from the String.prototype
"ThisIsMyString".length

所以,如果我使用(“ThisIsMyString”instanceof String)假设返回true,不是吗?但事实证明,返回false ..我相信这是因为原始类型。

这是我的问题:如果“ThisIsMyString”不是String的实例,它如何从该Object访问属性?我不知道这个难题的一部分是什么?

3 个答案:

答案 0 :(得分:1)

String.length不是

  

String.prototype

中的方法

length是String

属性

See the MDN docs for String.length


要回答您的问题,"hello" instanceof String返回false的原因在于instanceof实际运作的方式

Object.getPrototypeOf("hello")
// TypeError: Object.getPrototypeOf called on non-object

但是,这是您的字符串文字可以访问这些方法/属性的方式

"my string".constructor === String
// true

"my string".__proto__ === String.prototype
// true

如果您想要String

的实际实例
var str = new String("hello");
str instanceof String
// true

答案 1 :(得分:0)

您可以使用此类方法,因为语言会识别原始类型并将其转换为String对象的临时实例,并返回该对象的length属性。

答案 2 :(得分:0)

取自http://oreilly.com/javascript/excerpts/learning-javascript/javascript-datatypes-variables.html: “JavaScript隐式地将字符串原语包装在String对象中,处理String对象属性或方法调用,然后丢弃该对象”

进一步了解详情。