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

JavaScript 对象常量/初始化程序中的自引用

张璞
2023-03-14
问题内容

有什么办法可以使以下内容在JavaScript中起作用?

var foo = {
    a: 5,
    b: 6,
    c: this.a + this.b  // Doesn't work
};

在当前形式下,此代码显然会引发引用错误,因为this未引用foo。但是, 是否 有任何方法可以使对象文字的属性值取决于先前声明的其他属性?


问题答案:

好吧,我唯一能告诉你的就是getter::

var foo = {

  a: 5,

  b: 6,

  get c() {

    return this.a + this.b;

  }

}



console.log(foo.c) // 11

这是ECMAScript第5版规范引入的语法扩展,大多数现代浏览器(包括IE9)都支持该语法。



 类似资料:
  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均

  • 如何在cpp中声明全局常量对象,以便将其关联的数据完全存储在cpp中。rodata,而不是在运行时初始化期间创建的、不必要复制的对象? 例如,如果我制作类型为的globals

  • 本文向大家介绍C++常量详解一(常量指针与常量引用的初始化),包括了C++常量详解一(常量指针与常量引用的初始化)的使用技巧和注意事项,需要的朋友参考一下 1、常量 1.1、常量的初始化: const对象一旦创建后其值就不能再改变,所以const对象必须初始化。这里我们要注意一点,像const int *p和const int &r都并不是const对象。因为const int *p只是表示不能通

  • 前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加

  • 打印c时,c的值是初始化的值,x,y都是1。a变化了不影响c。 那么函数d在初始化时,x:b(),y:a为什么不初始化为x:1,y:1呢,就是这样