Je suis perdu ici. J'ai cette classe, je l'ai créé, qui prend des arguments sous forme d'objet:Objet de coulée en tant que hachage dans le prototype
new Widget('id_of_element', { option1: 'foo', option2: 'bar' });
Cependant, le second argument n'est pas considéré comme un hachage, mais comme un objet, donc je ne peux pas appliquer les paramètres par défaut pour si l'on n'est pas réglé:
initialize: function (element, options) {
this.options = $H({ option1: 'something', option2: 'else', option3: 'hello', option4: 100 }).update(options);
}
J'ai besoin Vales de la « options de l » argument à convertir en une table de hachage, donc je peux utiliser la fonction mise à jour(). Je ne trouve rien dans le framework Prototype qui va lancer un objet comme un Hash.
Ce qui est étrange est, sur this.options.inspect(), toutes les valeurs correctes apparaissent, mais quand je l'appelle:
alert(this.options.option1);
// or
alert(this.options['option1']);
... ils reviennent comme non défini. Pourquoi la méthode Hash # inspect trouverait-elle ces valeurs, mais n'est-elle pas encore définie? Ai-je manqué une compréhension substantielle d'un certain type?
Si oui ou non je peux jeter est hors de propos. Je devrais être capable d'appeler ces valeurs. Si Hash # inspect peut les voir comme ils devraient l'être, pourquoi ne puis-je pas extraire les valeurs à utiliser? – mwieczorek
Mis à jour ma réponse. –
Merci. Je connaissais la méthode Hash # get, mais j'espérais vraiment que les variables puissent être accédées plus simplement - tout comme certaines des méthodes Element qui renvoient une paire de données x/y et left/top accessible de cette façon – mwieczorek