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

时间:2018-07-21 22:53:57

标签: javascript variables storage

两个电话之间有什么区别?看起来几乎相同,但是运行它可以告诉我其他情况。从变量内部和变量外部调用属性似乎在调用不同的东西,但是我不确定如何或为什么。

PS。 Cheese是设置为false的布尔属性。

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

}

vs

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

}

1 个答案:

答案 0 :(得分:1)

我们将其简化为重要的部分。假设您有一个代表非常简单的披萨的对象,
{ 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>;

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