虽然我以前就吃过一次这个亏,不过昨天又犯这错误了。
虽然js里万物皆对象,不过也不是啥对象都可以加属性的,比如字符串。
var qweq='asdasdasdas'; qweq.miao=123; console.log(qweq.miao)//undefined
所以字符串是没法添加属性的,同理,数字、Boolean也不能添加属性。
我发现它们都是传值型变量诶。因为本体只有一个值,所以不能添加属性吗。
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。
JS 里面字符串跟对象好像是有点区别的,如果通过在引号里写东西创建的字符串, typeof 是 string ,而 new String() 出来的就会是 object 。 MDN 上有说明: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
看楼上glory的回复我已经知道啦
真不知道你都学了些什么, 我只能说, 你对程序语言的理解有很大问题.
“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)
原来如此(好久不见哟
那链接我怎么打不开
打来了,原来多了个括号。。。。谢谢啦
。。。。。。。。