从变量内部与变量外部调用对象 属性 (JS)

Calling an object property from within a variable vs outside a variable (JS)

这两个调用有什么区别?它看起来几乎相同,但 运行 它告诉我不同​​。从变量内部和变量外部调用 属性 似乎在调用不同的东西,但我不确定如何或为什么。

PS。奶酪是一个布尔值 属性 设置为 false。

  toggleCheese: function(position) {
    var pizza = this.pizza[position].cheese;
    pizza = !pizza;

}

  toggleCheese: function(position) {
    var pizza= this.pizza[position];
    pizza.cheese = !pizza.cheese;

}

让我们把它精简到重要的部分。假设您有一个对象代表一个非常简单的披萨,
{ cheese: false }。我们将创建一个变量 pizza 并将其指向对象:

var pizza = { cheese: false };

然后再创建一个变量cheese,指向对象的cheese的值 属性:

var cheese = pizza.cheese;

现在,这两者的区别:

cheese = true;
pizza.cheese = true;

是前者的意思是“将变量cheese指向true”,后者的意思是“取变量pizza指向的值,将其cheese 属性 到 true”。一个只影响 cheese 变量,另一个影响你想要的披萨对象。换句话说,这些实际上是两种不相关的赋值操作形式:

<variable> = <value>;
<value>.<property> = <value>;

如果要设置变量,使用变量形式;如果要设置 属性,请使用 属性 形式。