方法链会在堆栈中创建中间变量吗?

时间:2018-08-14 03:59:37

标签: javascript java jvm stack heap

  

方法链接:按照概念所述,每个方法都返回一个对象,从而允许   调用在单个语句中链接在一起。链接为   语法糖,无需中间变量,

只想知道,方法链接(return a reference to a object)在(anonymous? )intermediate variables中创建stack了吗?

在Java中

例如a.functionA().functionB().functionC().functionD()

在上面的声明中

A。在称为a的{​​{1}}之后,functionA将在JVM中分配temporary variable(指向对象B)以调用下一个函数(例如stack)?

B。或者仅function B调用了函数variable a(in stack),然后functionA指向 returned value(address)(stored somewhere else) object B中没有创建任何中间变量

在JavaScript中

例如: 人有一个heap对象,那么您可以使用stack来访问内部的属性,例如,在这种情况下,prototype prototype将创建一个中间对象堆栈中的变量?

1 个答案:

答案 0 :(得分:0)

这取决于实现。

但是,在大多数实现中,链接仅更新当前实例并返回其引用,因此不会创建任何中间变量。

例如:

public class A {
  private int a;
  private int b;

  public A(){}

  public A functionA() {
     return this; // In most implementations, the `this` is returned for chaining
  }

  public A functionB() {
     return this;
  }
}