0

目前我有以下内容:

function bar() {
    // Do fancy D3 stuff here

    function update(source) {
        // Do fancy D3 update
    }
}

bar()点击一个按钮,但我需要update()从外部访问(以及传递一个参数)bar()。我已经尽可能多地阅读了关于闭包的内容,但我仍然无法让它正常工作。我已经看到有关将函数分配给window对象以使内部函数全局化的内容,但我也没有得到它的工作。

4

3 回答 3

1

我不确定您要的是什么,但我不明白为什么您不能updatebar. 然后您可以update从内部和外部访问bar

这是jsfiddle

html:

<button onclick="bar()">Tree</button>

javascript:

function bar() {
    var p = document.createElement("h2");
    var pText = document.createTextNode("fancy D3 stuff in bar");
    p.appendChild(pText);
    document.body.appendChild(p);

    update("bar");
}

function update(source) {
    var p = document.createElement("h1");
    var pText = document.createTextNode("fancy D3 stuff in update called from " + source);
    p.appendChild(pText);
    document.body.appendChild(p);
}
于 2013-09-20T01:00:23.960 回答
0

要将“更新”功能分配给窗口,您可以这样做。

function bar() {
    // Do fancy D3 stuff here

    var update = function (source) {
        // Do fancy D3 update
    }

    window.updateBar = update;

}
于 2013-09-20T00:41:06.623 回答
0

如果我能很好地理解你,你想要这样的东西吗?

var a = {
    b : 0,
    set : function(input){
       b = input;         
    },
    get : function(){
        alert(b);
    }
}

a.set('34234');
a.get();
于 2013-09-20T01:11:52.593 回答