Je ne sais pas quand le changement a été fait, mais j'ai une idée de pourquoi ça ne fonctionne pas.
Considérons le code suivant
callWithTest = callback => callback('test');
var Demo = function () {this.str = 'demo';}
Demo.prototype.getStr = function () { return this.str;}
demo = new Demo ();
demo.getStr(); // returns 'demo'
callWithTest(demo.getStr); // returns undefined
window.str = 'window';
callWithTest(demo.getStr); // returns 'window'
Si vous trace le code, vous verrez que lors de la démo.getStr est appelée par une autre fonction, this
désigne window
, et le sine - str
n'est pas défini dans window
, il retourne undefined
. Si vous l'avez appelé directement ou de se lier avec la démo, this
se réfère à la démo et donc il retourne "démo".
En nodeJS (v6.6.0), il existe une classe appelée Console à l'intérieur de la console module explicitement par l'utilisateur tuyau de journaux dans un fichier (ou tout ce flux d'un utilisateur). Selon Node.js v6.6.0 spécification de l'api,
console = new Console(process.stdout, process.stderr);
Console
n'existe pas dans le navigateur comme il n'est pas nécessaire. La sortie de la console n'existe que dans une toile utilisée pour le débogage, et il y a exactement une instance de celle-ci. L'utilisateur ne peut pas et ne doit pas être en mesure de, tuyau de sortie de la console pour tous les autres lieux qu'il va devenir un grave problème de sécurité. En raison de cela, les développeurs peuvent faire quelque chose au sein de la fonction log comme var x = this.x || console.x
comme il y a exactement une instance de l'objet console.