看到一道题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 的属性呢?
因为a.的时候他会创造一个暂时的new Number(123),然后a.b就是复制给了这个暂时的对象,当赋值结束后new Number(123)就销毁了,所以a.b就读不到了。a.yideng一样,他会暂时创建一个new Number然后读取到原型上的yideng。这涉及到js中的类型转化,大概是这么个意思
因为
a.
的时候他会创造一个暂时的new Number(123)
,然后a.b
就是复制给了这个暂时的对象,当赋值结束后new Number(123)
就销毁了,所以a.b
就读不到了。a.yideng
一样,他会暂时创建一个new Number
然后读取到原型上的yideng。这涉及到js中的类型转化,大概是这么个意思