请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好, 关于原型的问题

function User() {}
User.prototype = { username: 'alex' }
var a = new User()
var b = new User()
console.log(a.username)
console.log(b.username)
console.log('=======================================================================')
User.prototype = { username: 'jack' }
console.log(a.username)
console.log(b.username)

图片描述

实例不是共享同一个原型对象空间吗, 正常来说应该指向同一块内存空间
为什么我在先创建了2个实例后再覆盖原型对象, 但是根据打印结果来看却还是指向原来的原型对象空间

正在回答 回答被采纳积分+3

1回答

keviny79 2021-11-11 18:03:47

function User () { }

User.prototype = { username: 'alex' }

var a = new User()

var b = new User()

// 到这个位置, a.__proto__,b.__proto__,User.prototype 一起指向{ username: 'alex' }这个原型对象空间

console.log(a.username)

console.log(b.username)

console.log('=======================================================================')

User.prototype = { username: 'jack' }

// 到这个位置改变 User.prototype原型属性指向,让其指向新的原型对象空间【 { username: 'jack' }】

// 但是 a.__proto__,b.__proto__,还指向着原来的{ username: 'alex' }原型对象空间

console.log(a.username)//依然访问{ username: 'alex' }原型对象空间

console.log(b.username)//依然访问{ username: 'alex' }原型对象空间


0 回复 有任何疑惑可以回复我~
  • 提问者 燎丶Trance #1
    明白了 就是改变原型之前 之前原型的内存空间并不会被回收 之前创建的对象 依然指向原来那块原型空间, 谢谢老师
    回复 有任何疑惑可以回复我~ 2021-11-11 18:45:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信