我目前正在学习javascript,还有一些我不理解的东西。
//This means that I am using a method from the String.prototype
"ThisIsMyString".length
所以,如果我使用(“ThisIsMyString”instanceof String)假设返回true,不是吗?但事实证明,返回false ..我相信这是因为原始类型。
这是我的问题:如果“ThisIsMyString”不是String的实例,它如何从该Object访问属性?我不知道这个难题的一部分是什么?
答案 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对象属性或方法调用,然后丢弃该对象”
进一步了解详情。