La meilleure façon de créer de la classe des accesseurs/mutateurs en Javascript?

À venir à partir de C#/PHP, je voudrais avoir plein getters/setters sur les classes (fonctions) que j'ai créer avec Javascript.

Cependant, dans beaucoup de code Javascript que j'ai rencontrées, les accesseurs et mutateurs ne sont pas utilisés, plutôt simples variables publiques.

J'ai été heureux de trouver John Resig de l'article sur les getters et les setters, mais certains commentaires sur ce que certains navigateurs "ne prennent pas en charge les accesseurs et mutateurs" qui est source de confusion pour moi, car ils ne sont pas une "fonctionnalité" de Javascript, mais plus d'un modèle simple qui utilise la base de la syntaxe Javascript. Cet article a été écrit en 2007, de sorte qu'il pourrait être dépassée par maintenant.

Quel est l'état actuel des getters et setters en Javascript? Sont-ils vraiment "pris en charge" par tous les navigateurs d'aujourd'hui (quoi que cela signifie)? Sont-ils un modèle de programmation utiles pour Javascript ou sont classes Javascript (les fonctions) mieux avec les variables publiques? Est-il une meilleure façon de les mettre en œuvre que le suivant?

$(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 le code de ballonnements?
  • Exactement, je ne veux pas d'augmentation du code, mais je voudrais avoir la séparation du public et du privé, de l'accès à mes cours 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 la propriété" pour obtenir la séparation, sans le ballonnement de la syntaxe. Tout cela en Javascript?
  • A la ci-dessus morceau de code qui fonctionne dans internet explorer 7/8/9 ??