在JavaScript中創建一個函數:我需要一個特定的範圍內創建一個功能。 要創建的函數由以前的代碼生成過程動態生成。此功能的定義範圍也可能會發生變化。JavaScript的:一個特定的範圍
看看這個例子:
var createFnInOtherScope = function() {
console.debug('createFnInOtherScope: Who I am', this);
//This code can not be modified because it's dynamically generated
function MyFunction() {
console.debug('MyFunction');
}
}
var obInitial = {
createFn: function() {
console.debug('createFn: Who I am', this);
createFnInOtherScope.call(window);
}
}
obInitial.createFn();
//ReferenceError: MyFunction is not defined
window.MyFunction();
我怎麼能做到這一點?
謝謝。
我認爲你是要求增加一個功能到全球範圍。以下答案的一些評論解決了這個問題如果你正在尋找一種更靈活的方法,你應該看看MONADs(允許/禁止的權限)。 –
請定義「範圍」是什麼_you_,因爲它看起來不是通常的JS定義(它是_lexical scope_)。 – Alnitak