javascript - 属性名称为 `undefined`

标签 javascript reactjs ecmascript-6

如果我在类上定义了属性或函数,我可以获得它的名称。例如我可以用这个得到一个类名...

console.log(`${this.constructor.name} is my name.);

或带有

的函数名称
fnA() {
  console.log(`There is a function called ${this.fnA.name});
}
<小时/>

但是我想知道尚未声明的属性/函数的名称,即 typeofundefined。这意味着 .name 失败。

有没有办法获取未定义字段的代码中的名称?

或者如 @skyboyer put it :“(我)获取一些函数作为参数,如果它未定义(我)想知道原始变量名称是什么”

类似这样的事情...

if (typeof this.missing == 'undefined') {
  console.log(`${getTheName(this.missing)} needs to be created.`);
}

最佳答案

使用Proxy get处理程序陷阱:

let ns = new Proxy({}, {
  get (target, name) {
    if (name in target) {
      return target[name]
    }

    // handle missing values
    console.log(name)
  }
})

ns.contains = true

// does nothing
ns.contains

// logs 'missing'
ns.missing

关于javascript - 属性名称为 `undefined`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336257/

相关文章:

javascript - jQuery Div 单击加载外部 URL 性能缓慢

reactjs - Visual Studio 2015 中更好的 ES6/ES7 React 支持?可能使用 TypeScript?

javascript - 在不转换为用户时区的情况下以时区输入显示时间

javascript - Webpack/Babel ES6 错误 : Uncaught SyntaxError: Unexpected token import

javascript - knockout 模板 : Own BindingContext, 相同的 parent

javascript - Laravel 如何根据查询按天渲染成融合图表

javascript - 如何在 Chrome 扩展程序中获取图像 url 列表

node.js - 添加git信息到create-react-app

javascript - 如何从对象中的 forEach 中获取搜索结果?

javascript - 通过使用 Map Filter 与对象数组进行比较来返回字段