親関数のスコープ内で関数を定義し、親関数を介して渡された引数を返す前にそのスコープとしてバインドすることは可能ですか?
次に例を示します。
var myObject = {
foo: "bar"
};
var myFunction = (function() {
return function() {
return this.foo;
};
}).call(myObject);
myFunction.call(myObject); // I'd like to bind myObject as this does ...
myFunction(); // ... but I'd like to do it before invoking it, without .call() or .apply()
または、私がやろうとしていることを説明する別の複雑な例:
var createMyCopy = function(original, self) {
var copy;
eval("copy=" + original.toString());
console.log(copy()); // returns undefined
};
(function() {
var self = "Hello world",
myFunction = function() {
return self;
};
console.log(myFunction()); // returns "Hello world"
createMyCopy(myFunction);
})();
元の関数を変更せずに関数を変更できるように、関数のコピーを作成しようとしていますが、元の関数で定義されている変数もコピーに含めたいです...