※ ChatGPTを利用し、要約された質問です(原文:[JS] private関数からオブジェクト参照)
[JS] private関数からオブジェクト参照
このQ&Aのポイント
JavaScriptのクラス内でprivate関数を定義し、オブジェクト変数を参照する方法について調べています。
参考文献を元に、testクラス内でprivate関数func1とpublic関数func2を定義しました。
しかし、func2からfunc1を呼び出した際に、func2の呼び出し元のオブジェクトを参照しようとするとundefinedとなってしまいます。
JavaScriptにて外部から使用する関数をpublicに、内部的に使用するだけの関数をprivateにしたく、
<http://d.hatena.ne.jp/brazil/20051028/1130468761>や<http://www.findxfine.com/programming/javascript/59.html>を参考に以下のようにしてみました。
func1はtestクラス内からしか呼び出せず、privateになっており、
func2はtestクラス外からも呼び出せて、publicになっているようです。
しかし、func2からfunc1を呼び出した際に、func2の呼び出しもとのオブジェクトを参照しようとすると
undefinedになってしまいます。
var a = new test();
//a.func1(); // これはprivateなのでエラー
a.func2(); // こちらはpublicなのでOK
function test(){
var self = this;
// private variable
var data1 = 1;
// public variable
this.data2 = 2;
// private function
function func1(){
console.log(data1); // 1を表示
console.log(this.data2); // これがundefinedとなってしまう
}
// public function
this.func2 = function(){
console.log(data1); // 1を表示
console.log(this.data2); // 2を表示
func1();
};
}
どのようにすれば、オブジェクト変数を参照でき、
クラス内でのみ使用可能なprivate関数を定義できるのでしょうか。
お礼
ありがとうございました。 selfを活用する方法を適用することにしました。