浏览器中的console.log()是否出现竞争情况?

时间:2019-06-20 16:38:50

标签: javascript

我的意思是,我很有可能忽略了一些简单的内容。

在代码中更容易解释,但我也会在这里尝试:

  • 我创建的对象的“勋章”属性设置为5。
  • 我将console.log()作为对象,并获得具有6枚勋章的对象。
  • 使用点符号记录实际对象属性将获得5。
  • 然后我调用一个增加奖牌属性的函数
  • 记录该对象将显示与以前相同的对象,属性为6

在该站点的节点和实时摘录功能中,第一次记录该对象将得出正确的结果5。

但是似乎在浏览器中,第一次记录对象实际上是在运行以下代码行之后才检索对象。这是预期的行为,还是我很胖?!

    var Person5 = function(name, YoB, height, weight) {
        this.name = name;
        this.YoB = YoB;
        this.height = height;
        this.weight = weight;
    };
    
    
    var Athlete5 = function(name, YoB, height, weight, olympicGames, medals) {
        Person5.call(this, name, YoB, height, weight);
        this.olympicGames = olympicGames;
        this.medals = medals;
    };
    
    Athlete5.prototype = Object.create(Person5.prototype);
    
    Athlete5.prototype.addMedal = function() {
        console.log('Number of medals before: ' + this.medals);
        console.log('Adding medal');
        this.medals++;
        console.log('Number of medals before: ' + this.medals);
    }
    
    var nick = new Athlete5('Nick', 1983, 6.0, 14, 5, 5);
    console.log(nick); // medals: 6 (in browser, it's 5 in the snippets)????
    console.log(nick.medals); // medals: 5
    nick.addMedal();
    console.log(nick); // medals: 6

这是Firefox中的结果,它显示为“ 5”,但是如果您扩展对象,则显示为“ 6” Firefox

并使用镀铬:Chrome

0 个答案:

没有答案