2016-04-04 5 views
0

Ich möchte Funktion für ein Objekt verfügbar sein, aber ich es nicht sichtbar sein, wenn ich es console.log oder senden Sie es an eine andere Funktion."Versteckte" Funktion auf Objekt in Javascript

var obj = function() { 
    this.name = 'Bob'; 
    this.age = 23; 
} 
obj.prototype.say = function() { 
    console.log(this.name, this.age, 'thats me..'); 
} 

var pers = new obj(); 
console.log(pers); // { name: 'Bob', age: 23 } 
pers.say(); // Bob 23 thats me.. 

Wäre das gut für die Lösung und gute Praxis dafür? Oder ist es eine bessere Möglichkeit, dies in Javascript zu erreichen?

+0

Dies macht es nicht unsichtbar, denke ich. Klicken Sie einfach auf das "Prototyp" -Tag, wenn Sie auf Chrom sind –

Antwort

0

Funktionen, die mit dem Prototyp erstellt werden, sind auch sichtbar, wenn Sie das Objekt protokollieren. Das einzige, was Sie in diesem Kontext tun können, ist das Erstellen von Funktionen in Ihrem Konstruktor unter Verwendung von this und das Erstellen eines closure. Und diese Funktionen werden im Gegensatz zu prototypischen Funktionen keine gemeinsamen Funktionen unter den Objektinstanzen sein. Ich meine, die Änderung der Funktion wird nicht in allen Objektinstanzen reflektiert.

var obj = function() { 
    this.name = 'Bob'; 
    this.age = 23; 
    function privateTest(){ alert("hai"); } 
    this.test = privateTest; 
} 
+1

'test' ist öffentlich. –

+0

@NinaScholz Aber privateTest wäre nicht sichtbar. Das ist der Punkt hier. –

+0

Wenn ich Ihre Lösung logge (ich laufe Knoten, wenn das wichtig ist) bekomme ich: {Name: 'Bob', Alter: 23, Test: [Funktion: privateTest]} – RickBrunstedt

Verwandte Themen