J'espère que ce n'est pas une question très stupide, mais je suis un peu confus concernant la façon dont jQuery traite la propriété this
lors de l'utilisation de sa fonction prototype.
Lors du passage d'un argument d'une fonction telle que $.fn.demo
, la valeur de this
contiendra l'objet DOM passé dans l'argument, dans ce cas, l'objet correspondant au sélecteur #test
:
$('#test').demo({test: 'test1'});
est-il possible de accéder à la portée de la fonction lors de l'utilisation de la fonction prototype jQuery avec un argument? Mon objectif est de définir des variables de portée dynamique, quelque chose que je devrait réaliser en utilisant this['demo'] = 'aaa'
Où vont-ils sont stockés sinon dans this
?
$.fn.demo = function(options){
var helloText = "hello";
// keeping central set of classnames and selectors
var classes = {
wrapper: 'wrapper',
pepe: 'demo'
};
//this has the #test DOM object value, not the function scope
console.log(this);
//trying to assign the object keys to the global scope
for (var key in classes) {
this[key] = classes[key];
}
console.log(helloText);
//fails to print the value of "pepe", it doens't exist in the scope
console.log(pepe);
};
$('#test').demo({test: 'test1'});
'this' ne serait pas l'objet DOM, mais l'instance de l'objet jquery. – MinusFour
@MinusFour nvm Je me trompe – bassxzero
Si vous faites 'this.pepe' au lieu de' pepe' cela devrait fonctionner – MinusFour