En utilisant le bit de code suivant:ce que cela se réfère à une méthode privée javascript
function Node(){
....
function foo(request){
for (var name in this) {
log(name +" is "+this[name]);
if(!(name == 'all' || typeof this[name] == 'function')){
request[name] = this[name];
}
}
return ...
};
}
J'ai été surpris que lorsque la fonction est appelée privée foo
this
ne semble pas se référer à l'objet contenant (une instance de Node
). Pourquoi donc ?
Bien sûr, je pourrais avoir quelque chose comme:
function Node(){
var ref = this;
....
}
et utilise ref
comme this
dans foo
, mais est-il un moyen de déclarer des méthodes privées pour lesquelles this
est une référence à l'objet contenant?
"'ceci' fait référence à l'objet utilisé pour appeler la fonction", mais j'ai appelé foo depuis une fonction publique dans Node (this.publicFoo = function() {... foo(); ...};) . Comment se fait-il alors que cela se réfère toujours à la fenêtre? Cheers –
'ceci' fait référence à l'objet sur le côté gauche du "." quand une méthode est appelée. Mais si appelé sans "." (par exemple, foo();) alors cela implique window.foo(); Peu importe où il est défini, mais comment il est appelé. –