来自JavaScript:David Flanagan的权威指南
JavaScript类型可以分为两类:基本类型 和对象类型。 JavaScript的原始类型包括数字, 文本字符串(称为字符串)和布尔值真值(称为 布尔值)。
它声明string
是原始类型。但后来有一个示例代码
var s = "hello, world" // Start with some text.
s.charAt(0) // => "h": the first character.
s.charAt(s.length-1) // => "d": the last character.
s.substring(1,4) // => "ell": the 2nd, 3rd and 4th characters.
s.slice(1,4) // => "ell": same thing
s.slice(-3) // => "rld": last 3 characters
s.indexOf("l") // => 2: position of first letter l.
s.lastIndexOf("l") // => 10: position of last letter l.
s.indexOf("l", 3) // => 3: position of first "l" at or after 3
字符串对象类型或原语是什么?原始类型如何有方法?这个对象类型属性不是吗?如果它是两者的某种混合,那么它是原始的还是它的对象?
答案 0 :(得分:2)
字符串是原始值:
Undefined,Null,Boolean,Number或String
之类的成员
但也有字符串对象,它们是对象而不是基元:
Object类型的成员,它是标准内置的实例
String
构造函数
看起来原始字符串有属性,但没有。
当您使用例如string.charAt(0)
时,将创建一个与原始字符串具有相同值的字符串对象。该对象继承自String.prototype
。调用此字符串对象的charAt
方法,并在string.charAt(0)
中返回返回的值。然后删除字符串对象。
当您将属性分配给原始字符串时,会发生类似的情况:该属性被分配给新的字符串对象而不是原始字符。
一些例子:
var primitiveStr = 'foo',
objectStr = new String('foo');
typeof primitiveStr; // 'string'
typeof objectStr; // 'object'
typeof primitiveStr.charAt; // 'function'
typeof objectStr.charAt; // 'function'
primitiveStr.foo = objectStr.foo = 123;
typeof primitiveStr.foo; // 'undefined'
typeof objectStr.foo; // 'number'