为什么 'abc'.hasOwnProperty('length') == true
Why does 'abc'.hasOwnProperty('length') == true
请帮助我理解这种情况下的原型继承:
为什么 'abc'.hasOwnProperty('length')
return 正确但 'length' in 'abc'
抛出错误?
表达式 'abc'.hasOwnProperty('length')
被 JavaScript 解释为
(new String('abc')).hasOwnProperty('length')
每个 (capital-S) 字符串实例都有自己的 length
属性,它给出了字符串的长度。
JavaScript (lower-case s) 字符串实例是原语,根本没有任何属性。使用字符串基元作为 .
运算符的 left-hand 端会导致字符串基元被隐式包装在 String 对象中(至少在概念上是这样;运行时实际上并不 必须实例化一个瞬态对象),这就是 .length
属性 的来源。
表达式 length in 'abc'
抛出异常,因为没有隐式提升 原语 'abc'
到带有 in
运算符的 String 实例.因此,由于基元不能具有 any 属性,并且这个概念没有意义,所以它是一个例外。
请帮助我理解这种情况下的原型继承:
为什么 'abc'.hasOwnProperty('length')
return 正确但 'length' in 'abc'
抛出错误?
表达式 'abc'.hasOwnProperty('length')
被 JavaScript 解释为
(new String('abc')).hasOwnProperty('length')
每个 (capital-S) 字符串实例都有自己的 length
属性,它给出了字符串的长度。
JavaScript (lower-case s) 字符串实例是原语,根本没有任何属性。使用字符串基元作为 .
运算符的 left-hand 端会导致字符串基元被隐式包装在 String 对象中(至少在概念上是这样;运行时实际上并不 必须实例化一个瞬态对象),这就是 .length
属性 的来源。
表达式 length in 'abc'
抛出异常,因为没有隐式提升 原语 'abc'
到带有 in
运算符的 String 实例.因此,由于基元不能具有 any 属性,并且这个概念没有意义,所以它是一个例外。