Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 更改此';当它';已经定了_Javascript_Html_Css_Oop_Dom - Fatal编程技术网

Javascript 更改此';当它';已经定了

Javascript 更改此';当它';已经定了,javascript,html,css,oop,dom,Javascript,Html,Css,Oop,Dom,我有一个组件对象,它是对DOM元素的引用,但也有一些其他属性,如“top”、“left”、“formatters”等 我在component类中有一个“refresh”方法,它应该更改其属性。我这样调用该方法: component.refresh(200,300,'formatter1'); 在我使用的方法的主体部分: private refresh(top, left, formatter) { this.top = top; this.left = left; this.for

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

我在component类中有一个“refresh”方法,它应该更改其属性。我这样调用该方法:

component.refresh(200,300,'formatter1');
在我使用的方法的主体部分:

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

我的目标是更改组件对象的属性。问题是,当第一次指定属性时,一切正常(属性正在创建),但当组件中已存在属性时,无法替换(属性与以前保持不变)。换句话说,当元素已经设置时,可以更改它的某些“this”属性?

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

所以你需要的是:

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

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

如果您使用React/Redux之类的库,您永远不应该对数据进行变异,您想要这样的库吗?如果是这样的话,您通常会通过返回具有新值的新对象来解决这个问题,这样原始值就不会改变,如果您更改了任何保存原始对象的变量,那么它将被垃圾收集

所以你需要的是:

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

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

我们可以看更多的组件类代码吗?具体来说,就是如何定义属性(顶部、左侧、格式化程序)以及如何定义组件类本身。这是一个合适的ES6+课程吗?(
类组件
)还是旧的?(
函数组件()
)。在javascript
中,这个
可以以一些非常奇怪和不直观的方式运行,您可能会遇到一个关于这个的问题。我们可以看到更多的组件类代码吗?具体来说,就是如何定义属性(顶部、左侧、格式化程序)以及如何定义组件类本身。这是一个合适的ES6+课程吗?(
类组件
)还是旧的?(
函数组件()
)。在javascript
中,此
可能以一些非常奇怪和不直观的方式运行,您可能会遇到有关此的问题。