【问题标题】:relationship between Javascript objects and variablesJavascript对象和变量之间的关系
【发布时间】:2021-06-20 12:38:08
【问题描述】:

在 javascript 中,对象被视为变量(至少据我所知)。

例如:

var myCar = new Object();
myCar.make = 'Ford';
myCar.model = 'Mustang';
myCar.year = 1969;

我不明白这背后的逻辑。即使在像 c++ 这样的语言中也是如此(即 C++ 对象可以被视为变量)吗?

【问题讨论】:

    标签: javascript object oop variables


    【解决方案1】:

    从技术上讲,您创建的 myCar 是一个变量,用于存储您使用 new Object() 创建的对象的实例。

    变量就像一个盒子,您可以在其中存储特定数据并通过代码访问它。

    因此,变量可以有多种形状或形式,具体取决于您放入的数据。它可以是字符串、对象、数组、数字或布尔值。不一定必须是对象。

    【讨论】:

      【解决方案2】:

      我认为您在这里混淆了几个概念。 “变量”是一种引用对象的方式,在 JavaScript 之类的语言中,是一种保留对它的引用的方式,因此在你完成它之前它不会消失。

      在 C++ 中也有变量,但它们对程序员来说更方便,因为一旦代码被编译,它们就不会像在 JavaScript 中那样以相同的方式存在,它们通常可以被优化掉。

      在您的代码中,您有一个变量myCar,它可以让您操纵对象。如果你这样做了:

      new Object()
      

      这会创建一个对象,但实际上会将其丢弃。在 JavaScript 中,这会收集和清理垃圾。在 C++ 中,这是一个内存泄漏

      你可以有没有变量的对象,也可以有没有对象的变量,像这样:

      var x = 9
      console.log(typeof(x))
      // => number
      

      其中x 是一个变量,它只是一个数字,而不是一个对象。

      说“对象被认为是变量”就像说“房子可以被认为是它的街道地址”。但这不是真的。这是一栋恰好有特定街道地址的建筑物,但是您可以将房屋四处移动,有些房屋甚至为此安装了轮子。同样,地址可以改变,但房子保持不变。

      街道地址是引用房屋的一种方式,就像变量可以引用对象一样。它也可以引用一个空地块,如 JavaScript 中的 undefined

      提示:现在使用 letconst 而不是更通用、有时很麻烦的 var 通常是一个好习惯。

      【讨论】:

        猜你喜欢
        • 2019-11-02
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 2011-03-08
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        相关资源
        最近更新 更多