2010-03-03 6 views

Répondre

2

La valeur de retour 1 est pas de console.log (this.foo),

Son de fn.foo = 1, Firebug juste retour dernière valeur dans sa console

Essayez, vous verrez aussi 1 aussi

Car cette fonction n'est pas exécutée lorsque vous l'attribuez à fn
fn=function(){} 
fn.foo = 1; 
+0

Oh je vois. Alors, est-ce un bug de firebug ou est-ce que ce javascript fait quelque chose de génial? – Yansky

+0

@Yansky: Ni l'un ni l'autre. C'est fonctionnalité par conception. La dernière valeur de retour est toujours imprimée. – kennytm

0

S'il n'était pas défini, vous pouvez y accéder de toute façon, il aurait juste la valeur undefined.

Je suppose que vous appelez fn(x) après l'instruction fn.foo = 1;. Si vous l'appelez avant, vous allez vous connecter undefined après, vous vous connectez 1.

1

Une variable est résolue en temps d'exécution.

Même sans la ligne fn.foo = 1;, l'obtention d'une propriété non définie à partir d'un objet renvoie undefined malgré tout. Ce n'est pas une erreur.

En outre, this.foo n'imprime pas 1 lorsque vous exécutez fn(), car this intérieur de la fonction ne pointe pas à la fonction fn, mais window ou l'instance qui reçoit un new fn().

Questions connexes