【发布时间】:2025-12-27 16:50:07
【问题描述】:
我是 javascript 原型继承的书呆子。我可以理解下面代码中发生的事情
function Hamster() { }
Hamster.prototype = {
food: [],
found: function(something) {
this.food.push(something)
}
}
// Create two speedy and lazy hamsters, then feed the first one
speedy = new Hamster()
lazy = new Hamster()
speedy.found("apple")
speedy.found("orange")
alert(speedy.food.length) // 2
下面的行也是警报2 b'coz 两个对象都在共享来自Hamster 原型的food 数组
alert(lazy.food.length) // 2
但如果我将数组的数据类型更改为数字,food 键不会在两个实例之间共享
function Hamster() { }
Hamster.prototype = {
food: 0,
found: function(something) {
this.food = something
}
}
// Create two speedy and lazy hamsters, then feed the first one
speedy = new Hamster()
lazy = new Hamster()
speedy.found(123)
alert(speedy.food) // 123
但是下面的行提醒0,你能告诉我为什么这不提醒123
alert(lazy.food) // 0
【问题讨论】:
标签: javascript arrays oop prototype prototypal-inheritance