关于原型
来源:4-3 异步编程解决方案Promise(1)
DF11G
2020-12-20
请问在实例中修改原型的引用类型属性,会影响所有实例;那为什么修改值类型不会受影响呢
function Person() {
Person.prototype.name = 'Faker'
Person.prototype.age = 24
Person.prototype.champion = [3, 5, 6]
Person.prototype.showName = function () {
console.log(this.name)
}
Person.prototype.showChampion = function () {
console.log(this.champion)
}
}
let Faker = new Person()
let Bang = new Person()
Bang.name += 'hahah'
Bang.champion.push(7)
Faker.showName() // Faker
Bang.showName() // Fakerhahah
Faker.showChampion() // [3, 5, 6, 7]
Bang.showChampion() // [3, 5, 6, 7]
写回答
2回答
-
慕粉0907293704
2022-07-20
Bang.name += 'hahah' // 这里只修改了类下面的普通name属性,并没修改上文定义的 prototype 下面的 name, Bang.champion.push(7) Faker.showName() // Faker Bang.showName() // Fakerhahah // 这里也只是访问了实例普通name属性,所以是读取是修改后普通name, // 你要是访问 Bang.__proto__.name还是Faker Faker.showChampion() // [3, 5, 6, 7] Bang.showChampion() // [3, 5, 6, 7] console.log(Bang.__proto__.name)
00 -
谢成
2020-12-21
在const那一节讲了基本数据类型和引用数据类型的存储方式的区别。
引用数据类型指向的是同一个内存空间。
012020-12-21
相似问题