Simple assignment versus push method in prototypal inheritance [duplicate]

Say I have this block of code:

let hamster = {
  stomach: [],

  eat(food) {
    this.stomach.push(food);
  }
};

let speedy = {
  __proto__: hamster
};

let lazy = {
  __proto__: hamster
};

speedy.eat("apple");
alert( speedy.stomach ); // apple
.
alert( lazy.stomach ); // apple

Both speedy and lazy objects share the same stomach array, but when I instead use a simple assignment for the eat function :

  eat(food) {
    // assign to this.stomach instead of this.stomach.push
    this.stomach = [food];
  }
};

For the simple assignment hey have different stomach arrays.

Both cases behave differently but why is that? Yet both use the ‘this’ keyword.