var str = "string";
alert(str.length)
str.o = 10
alert(str.o)
再定义一个
var strObj = new String("string") 它是一个对象类型,且这个对象类型是 string 对应的包装类
基本类型不是一个对象, 所以它不该有属性和方法. 但是str.length 却可以输出 6
那它为什么会有 length 属性??
此时 str.o = 10; 这样给 str 一个属性赋值 10 也是合法.
但是打印 str.o 却是 undefined
javascript 中的机制, 把一个基本类型比如字符串, 尝试用对象方式使用它时, javascript 会自动的将基本类型转换为一个包装类型对象, 所以转换相当于 new 了一个 string, 它的值和 str 一样. 当访问完成后, 比如str.length返回以后或者 str.o 返回以后, 该临时对象会被销毁掉.
所以str.o 赋值 10 之后, 再去访问, 值就是 undefined
-----
同理, 1,2,3 等这些是数值型 number,它不是对象, 没有属性. 但是也可以把他们转换成字符串, 也是类似原理
转载请注明原文地址:https://blackberry.8miu.com/read-36475.html