字符串是不可变的。
每个字符是一个
16
位的UTF-16
编码单元,这意味着一个Unicode
字符相当于一个或两个JavaScript
字符。
字符串字面量
即用单引号或双引号括起来的字符序列。
'string text'
"string text"
"中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어"
字符串对象
new String(thing)
由String()
构造函数得到字符串对象
> var s = new String(123)
> typeof s
'object'
>
对原始字符串和 String 对象的区分
区分两者很简单。
字符串字面量 以及
String()
函数作为普通函数调用时的返回值,这两种情况下得到的是字符串原始值。-
判断字符串原始值方法为
typeof 'xxx'
,得到‘string’
,即> typeof 'ad' 'string' // 字符串原始值
由
new String()
构造器函数得到的是字符串对象。-
判断字符串对象的方法也
为typeof 'xxx'
, 得到‘object’
,即> var s = new String(123) > typeof s 'object' // 字符串对象 >
最重要一点,字符串原始值也可以调用字符串对象所具有的方法,因为
JavaScript
内部会自动将字符串原始值转化为字符串对象,以调用相关方法,然后恢复。
判断某值是否为字符串
判断某值是否为字符串原始值或字符串对象
function isString (value) {
return Object.prototype.toString.call(value) === '[object String]';
}
判断某值是否为字符串原始值
function isStringPrimitive (value) {
return typeof value === 'string';
}
判断某值是否为字符串对象
function isString (value) {
return Object.prototype.toString.call(value) === '[object String]' && typeof value === 'object';
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。