繁体   English   中英

您如何在现有的闭合上执行操作?

[英]How do you perform operations on an existing closure?

创建闭包很容易,但是使用它对我来说很混乱。 这是我的封信。 一旦有了它,我就需要能够对其进行调用,例如doWork,calculateThis,doAnimation等,但是似乎没有办法访问闭包内部的函数。

function worker(input) {
    return function () {
        doWork = function () {
             alert("doing work");
        };
    }
}

function caller() {
    var myWorker = worker();
    myWorker.doWork(); // this fails
}

*您要问的问题似乎是主观的,很可能已被关闭。 -再次感谢stackoverflow

我相信这是您要的:

function worker(input) {
    return {
        doWork: function () {
             alert("doing work");
        },
        doAnimation: function() {
             alert("animating");
        }
    }
}

您现在可以使用您的代码来调用它:

var myWorker = worker();
myWorker.doWork();
myWorker.doAnimation();

请注意,您的代码并未真正使用闭包,但此代码可以:

function worker(input) {
    return {
        doWork: function () {
             alert("doing work: " + input);
        },
        doAnimation: function() {
             alert("animating: " + input);
        }
    }
}

var workerA = worker('A');
var workerB = worker('B');
workerA.doWork();
workerB.doAnimation();

你能看到区别么?

您正在尝试执行work()方法,但是在您的示例中,您返回的是函数,而不是具有“ work”属性的对象。

这可能是您想要的:

function worker(input) {
    return {
        work: function () {
            alert("doing work");
        };
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM