Leider können Sie nicht auf eine private Variable zugreifen. Also ändern Sie sie entweder in eine öffentliche Eigenschaft oder Sie fügen Getter/Setter-Methoden hinzu.
function person() {
//private Variable
var fName = null;
var lName = null;
// assign value to private variable
fName = "Dave";
lName = "Smith";
this.setFName = function(value){ fName = value; };
this.getFName = function(){ return fName; }
};
siehe javascript - Zugriff auf private Mitgliedsvariablen von prototyp-definierten Funktionen
Aber eigentlich sieht es so aus, als ob es das ist, wonach Sie suchen: Javascript privates Mitglied auf Prototyp
aus diesem SO-Beitrag:
Da JavaScript lexikalisch skaliert ist, können Sie dies auf einer Ebene pro Objekt simulieren, indem Sie die Konstruktorfunktion als Schließung über Ihre "privaten Mitglieder" verwenden und Ihre Methoden im Konstruktor definieren, aber dies funktioniert nicht für Methoden, die in der Prototypeigenschaft des Konstruktors definiert sind.
in Ihrem Fall:
var Person = (function() {
var store = {}, guid = 0;
function Person () {
this.__guid = ++guid;
store[guid] = {
fName: "Dave",
lName: "Smith"
};
}
Person.prototype.fullName = function() {
var privates = store[this.__guid];
return privates.fName + " " + privates.lName;
};
Person.prototype.destroy = function() {
delete store[this.__guid];
};
return Person;
})();
var myPerson = new Person();
alert(myPerson.fullName());
// in the end, destroy the instance to avoid a memory leak
myPerson.destroy();
Sehen Sie sich die Live-Demo an unter http://jsfiddle.net/roberkules/xurHU/