Javascript 如何从ES6类中的getter函数返回构造函数参数值
例如:Javascript 如何从ES6类中的getter函数返回构造函数参数值,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,例如: class Person { constructor(name) { } get name() { return /* “name” argument from constructor */; } } 我希望namegetter返回传递给构造函数的name值 将参数保存到实例属性: class Person { constructor(name) { this.name_ = name; } get name() { r
class Person {
constructor(name) {
}
get name() {
return /* “name” argument from constructor */;
}
}
我希望
name
getter返回传递给构造函数的name
值 将参数保存到实例属性:
class Person {
constructor(name) {
this.name_ = name;
}
get name() {
return this.name_;
}
}
将参数保存到实例属性:
class Person {
constructor(name) {
this.name_ = name;
}
get name() {
return this.name_;
}
}
将参数保存到实例属性:
class Person {
constructor(name) {
this.name_ = name;
}
get name() {
return this.name_;
}
}
将参数保存到实例属性:
class Person {
constructor(name) {
this.name_ = name;
}
get name() {
return this.name_;
}
}
应该可以:)(不漂亮,但可以)
您可以创建一个助手函数:
function makeGetter(obj, prop, value) {
Object.defineProperty(obj, prop, {
return value;
});
}
class Person {
constructor(name) {
makeGetter(this, 'name', name);
}
}
更新:
您实际需要的只是以下内容(不敢相信我把它复杂化了):
应该可以:)(不漂亮,但可以)
您可以创建一个助手函数:
function makeGetter(obj, prop, value) {
Object.defineProperty(obj, prop, {
return value;
});
}
class Person {
constructor(name) {
makeGetter(this, 'name', name);
}
}
更新:
您实际需要的只是以下内容(不敢相信我把它复杂化了):
应该可以:)(不漂亮,但可以)
您可以创建一个助手函数:
function makeGetter(obj, prop, value) {
Object.defineProperty(obj, prop, {
return value;
});
}
class Person {
constructor(name) {
makeGetter(this, 'name', name);
}
}
更新:
您实际需要的只是以下内容(不敢相信我把它复杂化了):
应该可以:)(不漂亮,但可以)
您可以创建一个助手函数:
function makeGetter(obj, prop, value) {
Object.defineProperty(obj, prop, {
return value;
});
}
class Person {
constructor(name) {
makeGetter(this, 'name', name);
}
}
更新:
您实际需要的只是以下内容(不敢相信我把它复杂化了):
如果我要使用一个中间变量,设置一个symbol属性可能更好,但我希望有一个直接的解决方案。是的,我发布了最简单的答案,以避免不必要的过度工程。您可以使用符号或weakmap来尝试模拟私有变量,但最终都归结为“如果它没有记录在公共API中,使用它的风险由您自己承担”。如果我要使用中间变量,可能最好设置一个符号属性,但我希望有一个直接的解决方案。是的,我发布了最简单的答案,以避免不必要的过度设计。您可以使用符号或weakmap来尝试模拟私有变量,但最终都归结为“如果它没有记录在公共API中,使用它的风险由您自己承担”。如果我要使用中间变量,可能最好设置一个符号属性,但我希望有一个直接的解决方案。是的,我发布了最简单的答案,以避免不必要的过度设计。您可以使用符号或weakmap来尝试模拟私有变量,但最终都归结为“如果它没有记录在公共API中,使用它的风险由您自己承担”。如果我要使用中间变量,可能最好设置一个符号属性,但我希望有一个直接的解决方案。是的,我发布了最简单的答案,以避免不必要的过度设计。您可以使用符号或weakmap来尝试模拟私有变量,但最终都归结为“如果未在公共API中记录,则使用它的风险由您自己承担”。这提醒了我,为什么ES6没有为我们提供定义对象上的getter的sugar语法?那
Object.defineProperty()
的东西太低级了。我不知道,但你可以在ES上提议讨论TC39可能已经花了10个小时讨论提议,但在任何问题上都无法达成一致:)关于更新,这将使属性可写。这提醒了我,为什么ES6没有为我们提供定义对象上的getter的sugar语法?那Object.defineProperty()
的东西太低级了。我不知道,但你可以在ES上提议讨论TC39可能已经花了10个小时讨论提议,但在任何问题上都无法达成一致:)关于更新,这将使属性可写。这提醒了我,为什么ES6没有为我们提供定义对象上的getter的sugar语法?那Object.defineProperty()
的东西太低级了。我不知道,但你可以在ES上提议讨论TC39可能已经花了10个小时讨论提议,但在任何问题上都无法达成一致:)关于更新,这将使属性可写。这提醒了我,为什么ES6没有为我们提供定义对象上的getter的sugar语法?那Object.defineProperty()
的东西太低级了。我不知道,但你可以在ES上提议讨论TC39可能已经花了10个小时讨论提议,但在任何方面都无法达成一致:)关于更新,这将使属性可写。你不能。构造函数参数的作用域仍然是构造函数,ES6中没有任何东西可以改变这一点。您不能。构造函数参数的作用域仍然是构造函数,ES6中没有任何东西可以改变这一点。您不能。构造函数参数的作用域仍然是构造函数,ES6中没有任何东西可以改变这一点。您不能。构造函数参数的作用域仍然是构造函数,ES6中没有任何东西可以改变这一点。