看到一道题
Object.prototype.yideng = "京程一灯";
var a = 123;
a.b = 456;
console.log(a.yideng); // 京程一灯
console.log(a.b) // undefined
因为 a 是直接定义的数字,为什么能够输出a.yideng
呢?
感觉这里的a
不是通过new Number(123)
这种形式定义的,为什么还能添加到Object
的属性呢?
看到一道题
Object.prototype.yideng = "京程一灯";
var a = 123;
a.b = 456;
console.log(a.yideng); // 京程一灯
console.log(a.b) // undefined
因为 a 是直接定义的数字,为什么能够输出a.yideng
呢?
感觉这里的a
不是通过new Number(123)
这种形式定义的,为什么还能添加到Object
的属性呢?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
因为
a.
的时候他会创造一个暂时的new Number(123)
,然后a.b
就是复制给了这个暂时的对象,当赋值结束后new Number(123)
就销毁了,所以a.b
就读不到了。a.yideng
一样,他会暂时创建一个new Number
然后读取到原型上的yideng。这涉及到js中的类型转化,大概是这么个意思