【问题标题】:Use initial value after declared声明后使用初始值
【发布时间】:2018-08-28 14:58:19
【问题描述】:

我在 ES6 类中声明了一个对象数组,我试图找到一种方法来使用我声明的参数和我声明的另一个参数。
这是我的代码:

    searchModeData = [
    {
        maximumCharactersCount: 100,
        maximumCharactersErrorText: 'my count is #count#'.replace('#count#', this.maximumCharactersCount)
    },
    {
        maximumCharactersCount: 1500,
        maximumCharactersErrorText: 'my count is #count#'.replace('#count#', this.maximumCharactersCount)
    }
];

当我分配值时,我得到带有“未定义”值的文本。当然我可以在那里进行替换,但我想知道数组中是否有替换它的快捷方式

        console.log(searchModeData[0].maximumCharactersErrorText);

我在 this.maximumCharactersCount 中得到未定义的值。有一个我不知道的解决方法吗?
谢谢。

【问题讨论】:

  • 究竟是什么给了你undefined?您如何尝试读取此值?
  • 是的,很抱歉。我编辑问题。
  • 啊,但这不仅仅是 JS。看起来像 React
  • 是的,但问题与javascript有关。再次编辑。
  • 不管怎样,this 并不是指它所在的对象。它指的是,或者它所在的函数

标签: javascript class ecmascript-6


【解决方案1】:

this.maximumCharactersCount 给你 undefined 因为它没有引用那个对象。解决方法是在 maximumCharactersErrorText 中使用函数而不是值,但是当您想要获取值时需要调用它。

searchModeData = [
    {
        maximumCharactersCount: 100,
        maximumCharactersErrorText: function() { return 'my count is #count#'.replace('#count#', this.maximumCharactersCount)}
    },
    {
        maximumCharactersCount: 1500,
        maximumCharactersErrorText: function() { return 'my count is #count#'.replace('#count#', this.maximumCharactersCount)}
    }
];
console.log(searchModeData[0].maximumCharactersErrorText());

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多