2010-06-30 7 views
0

faire ceci:peut Javascript faire

/*this can't run*/ 
var o = {first:1}; 
function f(arg,o){ 
    /* 
    can i do something make this function's this=o 
    */ 
    alert(arg+this.first); 
} 
f(2,o); 

égale ceci:

var o = { 
    first:1, 
    f:function(arg){ 
    alert(arg+first); 
    } 
} 
o.f(2); 

et je sais que nous pouvons utiliser ceci:

f.apply(o,1); 

mais je veux traiter toutes choses f:

function f(arg,o){ 
    /*magic*/ 
    alert(arg+this.first); 
} 
Est-ce
+4

Quelle est la question? Avez-vous essayé cela vous-même? –

+1

L'avez vous essayé? C'est à peu près une exigence pour poser ce genre de question. Essayez-le et dites-nous ce que vous ne comprenez pas sur les résultats. –

+1

Faire quoi de quoi? Consultez http://stackoverflow.com/faq pour obtenir de l'aide en posant des questions si vous êtes nouveau. – Abel

Répondre

3

ce que vous entendez:

var o = 
{ 
    first : 1, 
    f : function(arg) 
    { 
    alert(arg + this.first); 
    } 
} 
+0

+1 Bravo pour comprendre ce qui a été demandé! – Abel

+0

Je pense que l'OP veut lier la fonction globalement déclarée 'f' à' o'. –

+0

Oui, c'est ce que je veux dire ... Merci ~ Je veux savoir si je peux changer la portée d'une fonction à l'un de ses paramètres. – CunruiLi