首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性,扩展类上的Getter。永远不会调用Getter

属性,扩展类上的Getter。永远不会调用Getter
EN

Stack Overflow用户
提问于 2019-06-09 00:10:41
回答 1查看 34关注 0票数 3

我正在使用Chrome 72中提供的新Class Public Field Declarations,我遇到了一个非常奇怪的行为:

代码语言:javascript
复制
class Extended {
  property = 5;
}

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

const extending = new Extending();

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

如果这是预期的结果,我会感到惊讶,因为它使得扩展类上的getter不可访问。这是一个bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-09 00:42:21

getter被调用。当你第一次调用extending.property时,将检查扩展类的属性,如果没有找到任何东西,它将在扩展类中搜索属性,一旦找到,它将记录属性的值。

让我们来看看另外两个代码片段:

1.

代码语言:javascript
复制
class Extended {

}

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

const extending = new Extending();

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

这段代码将打印到控制台false,因为在扩展类和扩展类中都找不到属性,那么getter将返回false语句。

2.

代码语言:javascript
复制
class Extended {
  property = 5;
}

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

const extending = new Extending();

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

这将把6打印到控制台,因为在扩展类中发现了属性,它不会一直在扩展类中检查它

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56508042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档