sli*_*ype 2 javascript prototype prototypal-inheritance
在这种情况下,请帮助我理解原型继承:
为什么'abc'.hasOwnProperty('length')返回true但'length' in 'abc'会抛出错误?
该表达式'abc'.hasOwnProperty('length')由JavaScript解释为
(new String('abc')).hasOwnProperty('length')
Run Code Online (Sandbox Code Playgroud)
每个(capital-S)String实例都有自己的length属性,它给出了字符串的长度.
JavaScript(小写s)字符串实例是基元,根本没有任何属性.使用字符串原语作为.运算符的左侧会导致字符串原语隐式包装在String对象中(至少在概念上;运行时实际上不必实例化瞬态对象),这就是.length属性的位置来自.
该表达式length in 'abc'抛出异常,因为没有使用运算符将原语 隐式提升为'abc'String实例in.因此,由于原语不能具有任何属性,并且该概念没有意义,因此它是一个例外.