JavaScript - 为什么我不能向"字符串"对象添加新属性?

Van*_*ing 4 javascript

我已经尝试过JavaScript并注意到这个奇怪的事情:

var s = "hello world!";
s.x = 5;
console.log(s.x); //undefined
Run Code Online (Sandbox Code Playgroud)

JavaScript中的每种类型的变量都是从对象继承而来的.因此应该可以为每个对象添加新属性.

我误解了什么不对吗?

Ski*_*ick 10

JavaScript中的字符串不是.的实例String.如果你这样做,new String('my string')那就是.否则它是一个原语,String当你在它上面调用方法时,它会动态转换为一个对象.如果要获取字符串的值,则需要调用toString(),如下所示:

var s = new String("hello world!");
s.x = 5;
console.log(s.x); //5
console.log(s); //[object Object]
console.log(s.toString()); //hello world!
Run Code Online (Sandbox Code Playgroud)