fixez obtenir/définir la fonction des objets de propriété en js
J'ai, pour l'essentiel, un objet:
var foo = function() {
this.setting = false;
this.refresh = function() { ... };
}
let a = new foo();
a.setting = true; //a.refresh() is triggered
J'ai besoin de déclencher actualiser à tout moment .setting
est écrit. Je me sens comme il a quelque chose à voir avec bind
, mais je ne pouvais pas tout à fait le faire.
OriginalL'auteur ben | 2011-04-12
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un getter et un setter pour votre objet. Une façon est d'utiliser des getter/setter directement les fonctions de:
Si vous souhaitez utiliser foo.réglage de façon transparente comme un attribut, il y a des constructions de langage, mais malheureusement ils ne sont pas interopérables entre les navigateurs. En quelque sorte un retour à il y a 3 ans, il y a une méthode prise en charge par Mozilla, Safari, Chrome et Opéra et une autre méthode pour Internet Explorer. C'est la méthode standard:
http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/
IE9 a quelque chose d'autre, et je ne sais pas si il fonctionne même pour des non-objets DOM.
IE9 fonctionne de la même façon que le Chrome et FF, IE8 prend en charge sur les objets DOM, IE7 et antérieures ont pas de support pour les getters et les setters.
OriginalL'auteur
Vous pouvez utiliser JavaScript getters et setters. Voir le MDC de la documentation sur le sujet et John Resig blog post sur le sujet. Notez que tous les navigateurs prennent en charge cette.
L'essayer!
OriginalL'auteur
Vous êtes à la recherche d'un milieu setter? Quelque chose comme ceci?
J'ai tendance à combiner mon getter et setter dans une méthode en JavaScript, car il est tellement facile à faire. L'inconvénient de cette est
_settings
est toujours en public sur votre objet et n'importe qui peut écrire directement à elle. Le seul moyen de se cacher, c'est d'utiliser une fermeture, ce qui nécessite une approche totalement différente de la création de vos objets.OriginalL'auteur
Si vous n'êtes pas limité avec les anciens navigateurs, vous pouvez essayer d'utiliser l'approche décrite ici
OriginalL'auteur
Je ne suis pas pourquoi vous essayez d'utiliser l'opérateur "new", vous serez mieux à l'aide de l'objet littéral. Maintenant, si vous êtes à la recherche semblable à, disons, C# propriétés, vous pourriez faire quelque chose comme ceci:
Pour plus d'info, je vous recommande ceci: http://www.crockford.com/javascript/private.html
new
opérateur correctement le programme d'installation de prototypes...developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/...OriginalL'auteur
Je sais que c'est une vieille question qui a déjà été répondu, mais j'aimerais apporter une solution qui prend avantage de JavaScript les plus récentes de la syntaxe.
Définir un classe avec un getter et setter:
OriginalL'auteur