Javascript:我在对象中的每个变量前面需要加上this.var吗?

当我们创建一个Javascript对象时,经常会在对象内部定义许多变量。某些情况下,开发人员可能会将这些变量前缀为“this.var”来标识它们属于该对象的属性。然而,这样做是否必要呢?本文将探讨这个问题。

对象中的变量

在Javascript中,对象是一组键值对的集合。每个键对应一个值,可以是字符串、数字、布尔值、对象等。定义对象的基本语法如下:

--- ----- - -
  ----- -------
  ----- -------
  ---
--

在对象中定义变量同样使用这种语法。例如:

--- ----- - -
  ----- ---------
  ----- ---
  ----- ----
--

当我们想在对象内部使用这些变量时,有两种方法:

  1. 使用变量名称。例如:console.log(myObj.var1);
  2. 使用this关键字。例如:console.log(this.var1);

第二种方法是在变量前面加上“this.”,表示该变量属于当前对象的属性。在大多数情况下,我们不需要在变量前面加上“this.”。因为在对象内部,所有变量都可以被访问到。

--- ----- - -
  ----- ---------
  ----- ---
  ----- -----
  ------- ---------- -
    ------------------ -- --------
    ------------------ -- --
    ------------------ -- ----
  -
--

在上面的示例中,我们从函数内部访问了对象中的所有变量,而不必在变量前面加上“this.”。

属性名称冲突

尽管在大多数情况下不需要在变量前面加上“this.”,但有时可能会遇到属性名称冲突的问题。例如,如果我们在对象内部定义一个变量和一个函数,它们具有相同的名称,那么Javascript将优先使用函数而不是变量:

--- ----- - -
  ----- ---------
  ------- ---------- -
    ------------------ ---------
  --
  ------- ----- -- - -------
--

-------------------------- -- ----- -- - -------

在这种情况下,我们可以通过在变量名称前面加上“this.”来指定要访问的变量,而不是函数:

--- ----- - -
  ----- ---------
  ------- ---------- -
    ------------------ ---------
  --
  ------- ----- -- - --------
  ------------ ---------- -
    ------------------------- -- ------ -------
    ----------------------- -- --------
  -
--

--------------------

结论

在Javascript对象中,通常不需要在每个变量前面加上“this.”。因为在对象内部,所有变量都可以被访问到。但是,在某些情况下,可能会遇到属性名称冲突的问题。在这种情况下,我们可以使用“this.”来指定要访问的变量。

示例代码

--- ----- - -
  ----- ---------
  ----- ---
  ----- -----
  ------- ---------- -
    ------------------ -- --------
    ------------------ -- --
    ------------------ -- ----
  --
  ------------ ---------- -
    ----------------------- -- --------
    ----------------------- -- --
    ----------------------- -- ----
  -
--

---------------
--------------------

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/31203