number 类型会有prototype 吗?

看到一道题

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 的属性呢?

阅读 1.6k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题