【问题标题】:Need to call a function that has been lost to scope [duplicate]需要调用已丢失范围的函数[重复]
【发布时间】:2017-06-24 23:13:36
【问题描述】:

我有一个在另一个文件中定义的对象,我无法编辑。 我需要调用一个在其中定义但未设置为方法的函数。 我的测试不起作用,因为我的范围内不存在 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() 将其公开?

【问题讨论】:

  • 我认为你不能,但你为什么不使用“DontCallMe”方法?
  • 因为在实际对象中它做了我不想做的事情。

标签: javascript function object scope


【解决方案1】:

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

见:Getting All Variables In Scope

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多