首页 > 解决方案 > javascript:类方法访问深层函数

问题描述

是否可以从 MyObjGraph 的实例访问方法/函数 m1?提前感谢您的回答

class MyObjGraph 
{
    constructor(id) 
    {
        this.drawGraph(id);
    }
    drawGraph(id)
    {
        var inId = id;
        function m1()
        {
            alert(inId);
        }
    }
}

标签: javascript

解决方案


如果您可以稍微修改代码,则可以将内部方法暴露给“外部”:

class MyObjGraph {
    constructor(id) {
        this.drawGraph(id);
    }
    drawGraph(id){
        var inId = id;
        function m1(){
            alert(inId);
        }
        
        return {  //  <-------- return an object of everything you want to be exposed
          m1
        }
    }
}

const instance = new MyObjGraph();

instance.drawGraph("123").m1()

解释:

在您的原始代码中,该方法drawGraph不返回任何内容,因此它只执行代码,而其中的任何内容都无法访问。

对于可以直接从函数访问的任何内容,该函数需要有一个return语句,因此当您调用该函数时,您会在“return”中得到一些东西......并且在下面的这种情况下,它是一个具有单个属性的对象:(m1参考m1内部函数)


推荐阅读