1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
const wrapper = {
foo() {
console.log(this);
}
};
// Indirectly called member expressions set the callee's context to global "this"
(0, wrapper.foo)();
(0, wrapper.foo )();
(0, wrapper.foo)();
((0, wrapper.foo))();
((0, wrapper.foo ))();
((0, wrapper.foo))();
// Only callees of call expressions should be wrapped
console.log(wrapper.foo);
// Indirectly invoked eval is executed in the global scope
function testEval() {
console.log((0, eval)('this'));
console.log((0, eval )('this'));
console.log((0, eval)('this'));
}
testEval.call('test');
|