【问题标题】:Calling an object property from within a variable vs outside a variable (JS)从变量内部调用对象属性与变量外部(JS)
【发布时间】:2018-07-21 22:53:57
【问题描述】:

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

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

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

}

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

}

【问题讨论】:

    标签: javascript variables storage


    【解决方案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>;
    

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

    【讨论】:

    • 这是一个稀疏的答案,但我找不到好的副本。发布是因为重要的是要少一些误导。
    • 非常感谢,您的回答很完美!
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 2019-02-14
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多