2016-04-04 7 views
0

オブジェクト上で機能を利用したいのですが、console.logにするか別の機能に送ると表示されません。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.. 

これは解決策とその良い習慣に適していますか?それともjavascriptでこれを達成するより良い方法ですか?

+0

これは見えないとは思えません。 –

答えて

0

プロトタイプを使用して作成した関数は、オブジェクトをログに記録するときにも表示されます。このコンテキストで唯一できることは、thisを使用してコンストラクタ内に関数を作成し、closureを作成することです。これらの関数は、プロトタイプ関数とは異なり、オブジェクトインスタンス間で共有される関数ではありません。つまり、関数の変更はすべてのオブジェクトインスタンスに反映されません。

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

の 'test'が公開されている場合は、「プロトタイプ」タグをクリックしてください。 –

+0

@NinaScholzしかし、privateTestは見えません。それがここのポイントです。 –

+0

私はあなたの解決策をログしたときに(私はノードが問題であれば実行しています)、{name: 'Bob'、年齢:23、テスト:[Function:privateTest]} – RickBrunstedt

関連する問題