Javascript-传入函数不起作用
我对Javascript非常陌生,我只是坚持使用python。 问题是我有一个类,在这个类中我启动了一些空列表,比如this.data_y_json等等。如果我在类中创建普通函数,比如normal_function(){this.data_y_json=5},它就会工作,变量也会改变。 然而,我使用d3,有一些技巧我无法通过: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
// 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(这个)
将永远不会在箭头函数中工作,正如我所解释的,并且。