代码之家  ›  专栏  ›  技术社区  ›  VincentDM

为什么我的方法不识别对象成员?

  •  2
  • VincentDM  · 技术社区  · 5 年前

    我试图为一个d3力图创建一个“通用”类。 当 graphTick() 调用函数(或任何其他方法,它似乎…)类的成员值为 undefined 好像该方法没有绑定到该实例。

    我想知道我是否误解了编写一个类的JS方式(我来自C++背景)或者如果我滥用了D3框架。也许两者兼而有之?

    我试着换掉……

    simulation.on("tick", this.graphTick)
    

    ……由:

    simulation.on("tick", function(){ 
        /*graphTick implementation*/ 
    })
    

    但看起来它是被d3中的一个异常对象调用的,所以我想我的问题可能更多的是关于JS语法。

    用这个类得到了一个代码笔设置和一个快速测试: https://codepen.io/mrelemental/pen/VGLNLa

    1 回复  |  直到 5 年前
        1
  •  2
  •   Gerardo Furtado    5 年前

    this

    graphTick "tick" API

    console.log(this)

    {tick: function, restart: function, stop: function, nodes: function, etc...} 
    

    simulation.on("tick", this.graphTick.bind(this))
    

    bind() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind

    https://codepen.io/anon/pen/qgpxNX?editors=0010