为什么JavaScript原型方法对于同一属性输出不同?

时间:2018-07-17 04:12:58

标签: javascript prototype prototypal-inheritance

有人像我缺乏基本的大脑功能一样向我解释为什么fluffy.age输出3muffin.age输出4的原因吗?是否仅因为fluffy是在年龄变更之前定义的?

我对编码非常陌生,但是已经对其他所有JavaScript都有了不错的了解;但是,原型的想法对我来说仍然毫无意义。

function Cat(name, color, meow) {
  this.name = name;
  this.color = color;
}

Cat.prototype.age = 3;
var fluffy = new Cat("Fluffy", "White");
console.log(fluffy.age);

Cat.prototype = {
  age: 4
};

console.log(fluffy.age);
var muffin = new Cat("Muffin", "Brown");
console.log(muffin.age);

2 个答案:

答案 0 :(得分:0)

从中创建实例后,您正在更新原型。因此,该实例不包含更新的原型属性。

答案 1 :(得分:0)

function Cat(name, color, meow) {
          this.name = name;
          this.color = color;
        }

        Cat.prototype.age = 3;

        var fluffy = new Cat("Fluffy", "White");

        console.log('Before update', fluffy.age);

        fluffy.age = 4;

        console.log('After update', fluffy.age);

        var muffin = new Cat("Muffin", "Brown");

        console.log('New object', muffin.age);

从类创建新实例时,如果要更改该实例中的值,则需要使用该实例而不是原始类

相关问题