Javascript-在函数中传递THIS不起作用



我对Javascript非常陌生,我只是坚持使用python中的一些东西。问题是,我有一个类,在那里我启动了一些空列表,如this.data_y_json等。如果我在类内创建normal_function(({this.data_ y_json=5}这样的正常函数,它就会工作,并且变量会被更改。然而,我使用d3,有一些技巧我无法通过:

// inside class
// in constructor all this.xxx defined
// after object initiation I call set_data()
set_data(){
d3.json("link2.json",function(data) {
for (var i=0;i<data.d.results.length;i++){
this.data_y_json.push(parseFloat(data.d.results[i].PE))
...
//end of function
// end of class

调用函数set_data((后,会引发错误:SCRIPT5007:无法获取未定义或空引用的属性"data_y_json">

我正在将我的可视化重写为OOP,在此之前,我用全局变量解决了它,它很好地工作了。在python中,我只会传递"self"作为函数的参数,但在javascript中,传递THIS不起作用,还会引发另一个错误。

简单地说,我知道这个问题->this.data_y_json不能被正确识别,因为函数(数据(不能通过对象本身,但我不知道如何做到

提前感谢的建议

您是否处于ES2015环境中?将回调更改为箭头函数应该使this的范围成为您想要的

d3.json("link2.json", (data) => {
for (var i=0;i<data.d.results.length;i++){
this.data_y_json.push(parseFloat(data.d.results[i].PE))

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

用于读取箭头功能和此的范围

最新更新