当前位置: 首页 > 面试题库 >

我可以在JavaScript中声明对象时引用其他属性吗?

邢起运
2023-03-14
问题内容

我正在尝试做这样的事情:

var obj = {
    a: 5,
    b: this.a + 1
}

(而不是5,我不想执行两次返回一个数字的函数)

我可以重写它,以便obj.b稍后从分配obj.a,但是我可以在声明期间立即执行吗?


问题答案:

thisJavaScript中的编号无法像您想象的那样工作。this在这种情况下,指的是全局对象。

只有3种情况下this会设置该值:

功能案例

foo();

这里this将引用 全局 对象。

方法案例

test.foo();

在此示例this中将参考test

构造案例

new foo();

new关键字前面的函数调用充当构造函数。函数内部this将引用一个新创建的Object

在其他任何地方,都this指向全局对象。



 类似资料:
  • 问题内容: 如何将类属性声明为对象? 我试过了: 但这没有用。另外,为什么要那样做呢? 只实例化该对象并使用其成员不是更好吗? 问题答案: 从有关类属性的PHP手册(重点是我的): 类成员变量称为“属性”。您可能还会看到使用其他术语(例如“属性”或“字段”)来引用它们,但是出于参考目的,我们将使用“属性”。它们是使用关键字public,protected或private之一定义的,后跟普通变量声明

  • 问题内容: 我正在尝试使用以下代码声明和初始化属性。 但是,出现以下错误。 有人知道这是怎么回事吗?我应该放弃使用声明内联初始化属性的尝试,而是对init()方法进行初始化吗? 问题答案: 正如@giorashc所说,由于swift的两阶段初始化,self尚未被初始化,因此您不能这样做。 但是我认为您可以创建一个懒惰的初始化:

  • 我的Androidanifest.xml文件是这样的 我正在使用build。渐变版 build.gradle(APP)文件是这样的 但是它总是显示这个警告在Androidanifest.xml文件,如何解决这个警告? 问题: > 警告是关于什么的? 我该怎么修?

  • 问题内容: 我有一些经常被调用的代码,将它们声明为变量是否有意义? 在这种情况下将动态参数传递给方法是否安全? 问题答案: 不, 它们不是线程安全的,请改用Joda-time的版本 。 或者将它们包装在同步方法中,并使其成为线程安全的 博士说得很清楚 日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一种格式,则必须在外部进行同步。

  • 问题内容: 如果我有这个: 如果可能的话,如何在不实际调用方法的情况下获得对f.bar的引用? 编辑添加:我想做的是编写一个对f的成员进行迭代并对其执行某些操作的函数(不重要)。属性让我感到震惊,因为仅在getattr()中命名它们会调用其__get __()方法。 问题答案: (下图)在给定对象的中查找,如果存在则返回关联的值。如果不是其中的关键,则搜索对象的MRO 。如果找不到密钥,则引发。

  • 我有一个Spring bean类,看起来类似于以下内容: ConfigFileLoader.loadConfigFromFile()从文件中读取配置并返回一个新的Config对象。 有两种类型的线程: 更新程序线程: 只有一个 它定期调用updateConfig(当它检测到配置文件上的更改时) 多个线程正在使用Config对象调用getConfig以执行 只要最终读卡器线程开始获取最新的配置对象,