需要调用已失去范围

时间:2017-06-24 23:13:37

标签: javascript function object scope

我有一个在我无法编辑的另一个文件中定义的对象。 我需要调用在其中定义的函数,但未将其设置为方法。 我的测试不起作用,因为我的范围内不存在callMe。

// Example
function ObjectCreator()
{
    this.name = "I am an object";


    var callMe = function()
    {
        console.log("You did it");
    }

    this.DontCallMe = function()
    {
        console.log("You should not have called me");
        callMe();
    }

    return this;
}

我的档案

// My attempt

var foo = new ObjectCreator();

foo.test = function()
{
    // throws not defined error
    callMe();
};

foo.test();

如何在不编辑原始文件的情况下调用callMe()以使其公开?

1 个答案:

答案 0 :(得分:1)

这是不可能的。此函数将仅在构造函数或嵌套在其上的其他作用域内定义 - 这是词法作用域的工作原理。

请参阅:Getting All Variables In Scope