2017-06-24 16 views
0

編集できない別のファイルで定義されているオブジェクトがあります。 その中で定義された関数を呼び出す必要がありますが、メソッドとして設定されていません。 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()を呼び出すことができますか?

+0

は、私はあなたができないと思いますが、あなたはなぜあなたは「DontCallMe」メソッドを使用していませんか? – Gatsbill

+0

実際のオブジェクトでは、私がしたくないことを行うので。 – John

答えて

1

これはできません。この関数は、コンストラクタまたはその中にネストされた他のスコープ内でのみ定義されます。これは、レキシカルスコープの動作方法です。

参照してください:Getting All Variables In Scope

関連する問題