Javascriptでは、get/setメソッドを使用してオブジェクトのプロパティを作成できます。
function Field(arg){
var value = arg;
// Create a read only property "name"
Object.defineProperty(this, "value", {
get: function () {
return value;
},
set: function () {
console.log("cannot set");
}
});
}
var obj = new Field(10);
console.log(obj.value); // 10
obj.value = 20; // "cannot set"
value
ここでは、プロパティの設定は許可されていません。
TypeScriptでは、同じ動作を実現したい場合は、これを実行する必要があります(TypeScriptでgetおよびsetで提案されているように)。
class Field {
_value: number;
constructor(arg) {
this._value = arg;
}
get value() {
return this._value;
}
set value() {
console.log("cannot set");
}
}
var obj = new Field(10);
console.log(obj.value); // 10
obj.value = 20; // "cannot set"
obj._value = 20; // ABLE TO CHANGE THE VALUE !
console.log(obj.value); // 20
ただし、ここに表示されている問題は、のget / setメソッドを使用せずに、ユーザーが直接、いわゆるプライベートプロパティ_value
にアクセス/変更できることですvalue
。_value
ユーザーがこのプロパティ( )に直接アクセスするのを制限するにはどうすればよいですか?