gpt4 book ai didi

javascript - 如何在javascript中将变量范围限定为类

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:49 25 4
gpt4 key购买 nike

我正在尝试使用 class foo {} 语法创建一个类,并希望在其中有一个私有(private)变量。现在,我有这样的事情:

'use strict';
class foo {
constructor(x1,y1) {
var x = x1;
var y = y1;
}
get x() {
return x;
}
get y() {
return y;
}
}

每当我尝试访问 foo.x 和 foo.y 时,我都会收到 x is not found 错误。但是,当我尝试将变量声明放在构造函数之外时,它停止工作了。我也在使用静态方法,所以我不能不做一些工作就放弃类语法。我怎样才能解决这个问题?如何在对象内部声明一个变量,该变量是全局的并且在外部无法找到?

最佳答案

这些 getter 是在原型(prototype)上声明的,它们无法访问构造函数中的私有(private)(作用域)变量。您需要使用 Object.defineProperty用于创建特定于实例的 getter:

class Foo {
constructor(x, y) {
Object.defineProperties(this, {
x: {get() { return x; }, configurable: true},
y: {get() { return y; }, configurable: true}
});
}
}

这与 ES5 中没有什么不同。顺便说一句,假设您没有分配给变量,您不妨将它们设为不可写属性。

关于javascript - 如何在javascript中将变量范围限定为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42986646/

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