JSでOOPのような動作を模倣して実験しています。私は(プライベート)変数を持とうとしています:id
そしてname
関数内にPerson
。この関数には、(プライベート) 変数の初期化に使用される引数を渡しています。次に、 getter と setter をname
持ち、 の getter のみを持つオブジェクトを返すためid
、実質的にid
読み取り専用になります。
そのため、id はコンストラクターを介してのみ設定できますが、name はいつでも設定および取得できます。
これはコードです:
var Person = function (_id,_nm) {
var id, name;
this.id = _id;
this.name = _nm;
return {
setName: function (nm) {
name = nm;
},
getName: function () {
return name;
},
getId: function () {
return id;
},
print: function () {
document.writeln("Id: "+id+"<br />Name: "+name);
}
}
}
var person = new Person(123, "Mahesh");
person.print();
ただし、実行すると、実際に設定されてnew Person(123,"Mahesh")
いるかどうかがわかりません。デバッグ中に値にカーソルを合わせると適切に設定された値が表示されますが、ローカルパネルには初期化された値が表示されないためです。id
name
または、print() で目的の変数id
とname
変数を参照していない場合:
ここで何が問題なのですか?