Venant de C#/PHP, je voudrais avoir des getters/setters complets sur les classes (fonctions) que je crée avec Javascript.Meilleur moyen de créer des getters/setters de classe en Javascript?
Cependant, dans une grande partie du code Javascript que j'ai rencontré, les getters et les setters ne sont pas utilisés, plutôt des variables publiques simples. J'ai eu le plaisir de trouver John Resig's article sur les getters et les setters, mais quelques commentaires qui disent que certains navigateurs "ne supportent pas les getters et les setters" ce qui m'embrouille car ils ne sont pas une "caractéristique" de Javascript mais plus d'un motif simple qui utilise la syntaxe Javascript de base. Cet article a également été écrit en 2007, donc il pourrait être obsolète maintenant.
Quel est l'état actuel des getters et des setters en Javascript? Sont-ils en effet "pris en charge" par tous les navigateurs aujourd'hui (quel que soit ce que cela signifie)? Sont-ils un modèle de programmation utile pour Javascript ou sont des classes Javascript (étant des fonctions) mieux avec des variables publiques? Existe-t-il une meilleure façon de les mettre en œuvre que les suivantes?
$(document).ready(function() {
var module = new Module('idcode');
module.set_id_code('new idcode');
module.set_title('new title');
$('body').html(module.get_id_code()+': '+module.get_title());
});
function Module(id_code, title) {
var id_code = id_code;
var title = title;
//id_code
this.get_id_code = function() {
return id_code;
}
this.set_id_code = function(value) {
id_code = value;
}
//title
this.get_title = function() {
return title;
}
this.set_title = function(value) {
title = value;
}
}
Pourquoi voulez-vous du code bloat? – gdj
Exactement, je ne veux pas de bloat de code, mais je voudrais avoir la séparation de l'accès public et privé à mes classes comme je le fais dans d'autres langages tels que PHP et C#. PHP a __get et __set méthodes magiques et C# a sa "syntaxe de propriété" pour obtenir la séparation sans la syntaxe boursouflée. Des fonctionnalités comme celle-ci en Javascript? –
Le code ci-dessus a-t-il fonctionné dans IE 7/8/9 ?? – Shaggy