gpt4 book ai didi

javascript - 扩展类的属性,扩展类的 Getter。永远不会调用 Getter

转载 作者:行者123 更新时间:2023-11-29 10:56:23 29 4
gpt4 key购买 nike

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

class Extended {
property = 5;
}

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

const extending = new Extending();

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

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

最佳答案

setter/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

由于在扩展类中找到属性,这将向控制台打印 6,它不会继续在扩展类中检查它

关于javascript - 扩展类的属性,扩展类的 Getter。永远不会调用 Getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508042/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com