6

我目前正在学习javascript,有些东西我不明白。

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

所以,如果我使用 ("ThisIsMyString" instanceof String) 应该返回 true,不是吗?但结果返回 false .. 我相信那是因为原始类型。

这是我的问题:如果“ThisIsMyString”不是字符串的实例,它如何访问该对象的属性?我不知道谜题的哪一部分?

4

3 回答 3

1

String.length 不是

来自 String.prototype 的方法

length是字符串的一个属性

请参阅 MDN 文档了解 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
于 2013-11-12T22:20:32.467 回答
0

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

进一步阅读了解详情。

于 2013-11-12T22:24:22.180 回答
0

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

于 2013-11-12T22:18:53.390 回答