[Javascript]不要试图给字符串添加属性

虽然我以前就吃过一次这个亏,不过昨天又犯这错误了。

虽然js里万物皆对象,不过也不是啥对象都可以加属性的,比如字符串。

var qweq='asdasdasdas';
qweq.miao=123;

console.log(qweq.miao)//undefined

所以字符串是没法添加属性的,同理,数字、Boolean也不能添加属性。

我发现它们都是传值型变量诶。因为本体只有一个值,所以不能添加属性吗。



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

0 0 投票数
打分
订阅评论
提醒
guest
7 评论
内联反馈
查看所有评论
FiveYellowMice
游客
FiveYellowMice
7 年 前

JS 里面字符串跟对象好像是有点区别的,如果通过在引号里写东西创建的字符串, typeof 是 string ,而 new String() 出来的就会是 object 。 MDN 上有说明: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

佳佳菌
游客
7 年 前
回复给  FiveYellowMice

看楼上glory的回复我已经知道啦

BlackGlory
游客
7 年 前

真不知道你都学了些什么, 我只能说, 你对程序语言的理解有很大问题.

“js里万物皆对象”这个前提就是错的, 你用的是字符串字面量(也称基本量), 属于primitive(https://developer.mozilla.org/en-US/docs/Glossary/Primitive), 在调用其方法或成员时会通过相应的构造函数将其转换成对象处理, 只能充当对象, 其自身并不是对象.

你要加属性, 需要手动调用构造方法创造对象才行:

var p = ‘abc’
, o = new String(‘abc’)
p.something = true
o.something = true
console.log(” + p, p.something, typeof p, p instanceof String)
console.log(” + o, o.something, typeof o, o instanceof String)

佳佳菌
游客
7 年 前
回复给  BlackGlory

原来如此(好久不见哟

佳佳菌
游客
7 年 前
回复给  BlackGlory

那链接我怎么打不开

佳佳菌
游客
7 年 前
回复给  BlackGlory

打来了,原来多了个括号。。。。谢谢啦

Mooc
游客
7 年 前

。。。。。。。。