JavaScript,String不是基本类型吗,为什么有length属性?

JS红皮书,3.4.6节 String类型,

任何字符串的长度都可以通过访问其length属性取得,例如: alert(text.length); // 输出 28 这个属性返回了这个字符串中16位字符的数目。如果字符串中包含双字节字符,那么length属性可能不会精确地返回字符串中的字符数目。

泽卡斯. JavaScript高级程序设计(第3版) (Kindle 位置 1495-1497). 人民邮电出版社. Kindle 版本.

String不是基本类型吗?怎么有属性?
是“基本包装类型”的用法?

阅读 7.2k
4 个回答

从别人的答案拷贝过来的
通过字面量的方式创建:var a = 'string';,这时它就是基本类型值;通过构造函数的方式创建:var a = new String('string');这时它是对象类型。
基本类型是没有属性和方法的,但仍然可以使用对象才有的属性方法。这时因为在对基本类型使用属性方法的时候,后台会隐式的创建这个基本类型的对象,之后再销毁这个对象

string值类型,但是浏览器在你用length属性的时候会帮你new String的基本包装类型,然后使用包装类型里面的length属性,用完浏览器会把创建的包装类型销毁,number,boolean也有基本包装类型。

可以去看看5.6 基本包装类型 5.6.3 String类型。这里讲了是“基本包装类型”的用法。
String 类型的每一个实例都有一个length属性,表示字符串中包含多个字符。来看下面的例子:

var stringValue = "hello world";
alert(stringValue.length); // "11"

实际上你在调用length就被隐式包装了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题