【问题标题】:Change this's property value when it's already set当它已经设置时更改它的属性值
【发布时间】:2020-09-04 13:40:11
【问题描述】:

我有组件对象,它是对 DOM 元素的引用,但也有一些其他属性,例如“top”、“left”、“formatters”等。

我在组件类中有一个“刷新”方法,它应该改变它的属性。我正在调用这样的方法:

component.refresh(200,300,'formatter1');

在我使用的方法的主体部分:

private refresh(top, left, formatter) {
  this.top = top;
  this.left = left;
  this.formatter = formatter;
}

我的目标是更改组件对象的属性。问题是,当第一次分配属性时,一切都很好(正在创建属性),但是当组件中已经存在属性时,它不能被替换(属性保持与以前相同)。换句话说 - 是否可以在元素已经设置时更改它的某些“this”属性?

【问题讨论】:

  • 我们能看到更多的组件类代码吗?具体来说,您如何定义属性(顶部、左侧、格式化程序)以及您如何定义组件类本身。它是一个合适的 ES6+ 类吗? (class component) 还是更老的东西? (function component())。在 javascript 中,this 可能会以一些非常奇怪和不直观的方式运行,您可能会遇到 this 周围的问题。

标签: javascript html css oop dom


【解决方案1】:

如果你使用像 React/Redux 这样的库,你永远不应该改变数据,你想要这样的东西吗?如果是这样,您通常通过返回具有新值的新对象来解决该问题,这样原始值不会改变,如果您更改任何将保存该原始对象的变量,它将被垃圾收集。

所以你需要的是这样的:

component = component.refresh(200,300,'formatter1');

private refresh(top, left, formatter) {
  return new Component(top, left, formatter);
}

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多