Javascript-传入函数不起作用

Javascript-传入函数不起作用,javascript,class,variables,d3.js,this,Javascript,Class,Variables,D3.js,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 c

我对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
//类内
//在构造函数中定义了所有this.xxx
//在对象初始化之后,我调用set_data()
set_data(){
d3.json(“link2.json”,函数(数据){
对于(var i=0;i)this.data_y_json可能无法识别,因为函数(data)没有传递对象的self,但我不知道如何做


提前感谢您的建议

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

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))
d3.json(“link2.json”,(数据)=>{

对于(var i=0;i您是否处于ES2015环境中?将回调函数更改为箭头函数应该将此范围
设置为您想要的范围

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))
d3.json(“link2.json”,(数据)=>{

对于(var i=0;iSee.quick and dirty:在方法的开头定义
var self=this;
,然后使用
self
而不是
this
参见。quick and dirty:在方法的开头定义
var self=this;
然后使用
self
而不是
this
箭头函数与
函数()
syntax它只是语法糖,对于小lambda's来说更容易编写s@rioV8箭头函数不等同于常规函数,也不等同于更易于编写的版本:箭头函数没有自己的
this
,它们没有
参数
对象,不能使用
new
调用,它们具有隐式它
return
等等。区别很多。@GerardoFurtado:这可能就是为什么有时候
d3.select(这个)
不起作用,我不得不使用
d3.select(nodes[I])
。如果使用
{/code>@rioV8没有隐式返回是的,但有时不是:
d3.select(这个)正如我解释的那样,
永远不会在箭头函数中工作。箭头函数相当于
函数()
syntax它只是语法糖,对于小lambda's来说更容易编写s@rioV8箭头函数不等同于常规函数,也不等同于更易于编写的版本:箭头函数没有自己的
this
,它们没有
参数
对象,不能使用
new
调用,它们具有隐式它
return
等等。区别很多。@GerardoFurtado:这可能就是为什么有时候
d3.select(这个)
不起作用,我不得不使用
d3.select(nodes[I])
。如果使用
{/code>@rioV8没有隐式返回是的,但有时不是:
d3.select(这个)
将永远不会在箭头函数中工作,正如我所解释的,并且。