两个电话之间有什么区别?看起来几乎相同,但是运行它可以告诉我其他情况。从变量内部和变量外部调用属性似乎在调用不同的东西,但是我不确定如何或为什么。
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;
}
答案 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>;
如果要设置变量,请使用变量形式。如果要设置属性,请使用属性表单。