首页 > 解决方案 > 为什么同一个对象的属性在两个不同的console.log中是不同的?

问题描述

console.log(myDog) 在 myDog.eatTooManyTreats() 之前和之后打印两个不同的值,12 和 13。不能真正理解为什么会这样,不是对象通过引用传递,这意味着它们不能有两种不同的状态. 感谢您的关注。

const dogFactory = (_name, _breed, _weight) => {
  return dogObj = {
    _name, 
    _breed,
    _weight,
    get name () {
      return this._name;
    },
    get breed () {
      return this._breed;
    },
    get weight () {
      return this._weight;
    },
    set name (value) {
      return this._name = value;
    },
    set breed (value) {
      return this._breed = value;
    },
    set weight (value) {
      return this._weight = value;
    },
    bark() {
      return console.log('ruff! ruff!');
    },
    eatTooManyTreats() {
      return this._weight++;
    }
  }
}

const myDog = dogFactory('Dodo', 'Milk', 12);
console.log(myDog);                          // weight is 12

myDog.eatTooManyTreats();
console.log(myDog);                          // weight is 13

标签: javascriptobjectpass-by-reference

解决方案


推荐阅读