动态创建一个返回对象属性的getter

迈克·K

我正在尝试在一个对象中创建一个吸气剂,以返回适当类型的字段。

我得到它与此工作:

const getType = field => ({
  email: "email",
  telephone: "tel",
  get type() {
    return this[field] || "text";
  }
});

我唯一的问题是,这是一个返回对象的函数。

编辑blazing-pond-8cxlq

我正在尝试通过基于传递的参数创建动态计算属性来采用稍微不同的方法。

我想做这样的事情:

const getType = {
  email: "email",
  telephone: "tel",
  get [type]() {
    return this[type] || "text";
  }
};

但这会引发错误Error: type is not defined

编辑Purple-Microservice-Furqu

我想在JavaScript中做些什么吗?

我知道我可以做类似的事情,

const fieldsMatrix = {
  email: 'email',
  telephone: 'tel',
}

['email', 'username'].map(field => <input type={fieldsMatrix[prop] || 'text'} />)

但这不是我要问的问题。

iota

您可以使用Proxy拦截所有尝试获取任何属性的尝试。

const getType = new Proxy({
  email: "email",
  telephone: "tel",
}, {
  get(target, prop, receiver) {
    return target[prop] || "text";
  }
});
console.log(getType.email);
console.log(getType.somethingElse);

您也可以在对象上定义一个函数。

const types = {
  email: "email",
  telephone: "tel",
  getType(type) {
    return this[type] || "text";
  }
};
console.log(types.getType('email'));
console.log(types.getType('somethingElse'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回一个在对象文字上定义的 getter?

在另一个对象中动态创建对象

根据另一个类的属性创建一个带有 getter 的类

用与对象类型相同的getter / setter命名另一个对象的属性的对象

如何动态创建一个属性少的结构?

Django 对象创建一个或多个项目(动态)

动态创建一个包含数组的对象

如何创建带有返回一个可选参数的getter但返回一个非可选参数的setter的下标

尝试返回一个对象并显示其属性

深入搜索属性值后返回一个对象

根据属性从列表中返回一个随机对象

Getter 返回一个右值?

返回一个临时对象会在C ++中创建一个临时对象吗?

创建一个接受类型对象的通用方法并返回一个新的类型对象

创建一个返回对象的表达式

创建一个返回实现通用接口的对象的方法

从 python 函数创建对象返回一个类

用另一个对象的属性-值对创建一个新对象

基于Python中的另一个对象属性创建一个类的对象

在一个循环中创建对象属性

如何创建一个静态类的“属性”对象?

如何创建一个包含选定属性的Java对象?

创建一个对所有对象都相同的属性

创建一个在类之间共享其属性的对象

创建新对象时查询核心数据以获取特定属性,如果存在则返回该对象,如果不存在则创建一个新对象

根据动态生成的另一个对象的属性计算对象的属性值的总和

如果对象的一个属性需要一个承诺值,如何创建一个对象

如何从对象创建一个 json 字符串?– 它返回一个空的“[]”?

从另一个对象返回按许多对象属性分组的对象数组