скажите пожалуйста, в чем разница между этими тремя выражениями:
console.log(  (Function.prototype.constructor.apply(Function.prototype, ['a', 'return a + 1;']))(1)  );
console.log(  (new Function('a', 'return a + 1;'))(1)  );
console.log(  (Function.prototype.constructor('a', 'return a + 1;'))(1)  );
и в каких случаях что лучше использовать?