Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从ES6类中的getter函数返回构造函数参数值_Javascript_Class_Ecmascript 6 - Fatal编程技术网

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中没有任何东西可以改变这一点。