在javascript中,字符串是基本数据类型,而不是引用数据类型(对象)。
有人会发现,代码中经常会把对象方法在基本数据类型上使用,比如:
console.log("abc".charAt(0)); // a
这是因为,运算符提供了装箱操作,它会根据基础类型构造一个临时对象,使得我们能在基础类型上调用对应对象的方法。
有的人看到js中字符串有length属性和charAt()方法,所以才以为js是对象。
js的一些特性是比较反直觉的,就刚才说的这一点,还有一个例子,我们甚至在原型上添加方法,都可以应用于基本类型,比如以下代码:
Symbol.prototype.hello = () => console.log("hello"); var a = Symbol("a"); console.log(typeof a); // symbol a 并非对象 a.hello(); // hello 有效