Les méthodes publiques de la programmation orientée objet en javascript

Je veux faire une classe javascript avec des méthodes qui je peux appeler au sein de la classe comme à l'extérieur de la classe. Je veux faire un "public" de la méthode, si vous voulez. Je veux getTextAreaElement et appendTextArea à de telles méthodes.

J'ai montré un extrait de code j'ai pu arriver jusqu'ici. J'ai aussi essayé de définir les méthodes de prototypes ainsi que l'intérieur de la classe (this.func = ...). Mais qui ne m'a permis d'appeler la méthode à l'extérieur (new Socket().appendTextArea("osgjr89");) mais PAS au sein de la classe elle-même! L'extrait de code ci-dessous montre l'exact opposé de mise en œuvre où je ne peux pas appeler la méthode en dehors de la classe, mais peut appeler cela de l'intérieur.

Erreur:

Uncaught TypeError: Object #Socket n'a pas de méthode 'appendTextArea'

socket.js:

function Socket() {
var socket;
var canvas = document.getElementById('c');
var context = canvas.getContext("2d");

if (window.WebSocket) {
    socket = new WebSocket("ws://localhost:9012/websocket");
    socket.binaryType = 'arraybuffer';
    socket.onopen = onopen;
    socket.onmessage = onmessage;
    socket.onerror = onerror;
    socket.onclose = onclose;
} else {
    alert("Your browser does not support Web Socket.");
}

function getTextAreaElement() {
    return document.getElementById('responseText');
}

function appendTextArea(newData) {
    var el = getTextAreaElement();
    el.value = el.value + '\n' + newData + " :)";
}

function onopen(event) {
    getTextAreaElement().value = "Web Socket opened!"; 
}
/*[...]*/
}

main.js (les charges socket.js)

$(document).ready(function() {
var s = new Socket();
s.appendTextArea("osgjr89"); //ERROR!
});

Mis à JOUR socket.js:

function Socket() {
[...]
if (window.WebSocket) {
    socket = new WebSocket("ws://localhost:9012/websocket");
    socket.binaryType = 'arraybuffer';
    socket.onopen = this.onopen;
    socket.onmessage = this.onmessage;
    socket.onerror = this.onerror;
    socket.onclose = this.onclose;
} else {
    alert("Your browser does not support Web Socket.");
}

this.getTextAreaElement = function() {
    return document.getElementById('responseText');
}

this.appendTextArea = function(newData) {
    var el = this.getTextAreaElement();
    el.value = el.value + '\n' + newData + " :)";
}

this.onopen = function(event) {
    this.getTextAreaElement().value = "Web Socket opened!";
}
[...]
}
InformationsquelleAutor Howie | 2013-02-18