字符串是不可变的。
每一个字符是一个
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';
}