编程语言
首页 > 编程语言> > javascript-扩展类上的属性,扩展类上的Getter.吸气剂从未被调用

javascript-扩展类上的属性,扩展类上的Getter.吸气剂从未被调用

作者:互联网

我正在使用Chrome 72中提供的新Class Public Field Declarations,遇到了这种真正奇怪的行为:

class Extended {
  property = 5;
}

class Extending extends Extended {
  get property() {
    return false;
  }
}

const extending = new Extending();

console.log(extending.property);
//logs 5

如果这是预期的结果,我会感到惊讶,因为它使扩展类上的getter无法访问.这是错误吗?

解决方法:

吸气剂被调用.
当您首先调用extending.property时,将检查Extending类的属性,如果在那里找不到任何内容,则它将在Extended类中搜索属性,一旦找到该属性,它将记录该属性的值.

让我们检查另外2个代码段:

1.

class Extended {

}

class Extending extends Extended {
  get property() {
    return false;
  }
}

const extending = new Extending();

console.log(extending.property);
//logs false

此代码将在控制台上显示为false,因为在Extending类或Extended类中都找不到属性,那么getter将返回false语句.

2.

class Extended {
  property = 5;
}

class Extending extends Extended {
      property = 6;
      get property() {
        return false;
      }
    }

const extending = new Extending();

console.log(extending.property);
//logs 6

由于在Extending类中找到了该属性,因此它将在控制台上打印6,它将不会在Extended类中继续对其进行检查.

标签:ecmascript-next,ecmascript-6,google-chrome,es6-class,javascript
来源: https://codeday.me/bug/20191210/2104350.html