function() {
var name;
this.set = function(name) {
this.name = name; <-- this
}
}
プライベート変数にパラメータを割り当てるにはどうすればよいでしょうか? Javaとは異なり、「this」も関数を指しているので、私はそれを理解することはできません。Javascriptのプライベート変数とパラメータは同じ名前です
function() {
var name;
this.set = function(name) {
this.name = name; <-- this
}
}
プライベート変数にパラメータを割り当てるにはどうすればよいでしょうか? Javaとは異なり、「this」も関数を指しているので、私はそれを理解することはできません。Javascriptのプライベート変数とパラメータは同じ名前です
の内部にはが設定され、変数name
は変数name
よりも優先されます。外部変数にある値を割り当てるには、内部または外部で別の名前を付ける必要があります。 しかし、あなたは何かなどを行うことができ、
function() {
this.name = '';
this.set = function(name) {
this.name = name; <-- this
}
}
これは、オブジェクトのプロパティに値を代入され、プライベート変数に新しい値を代入されていません。
私は別の所有者を表示している間、変数を最もよく記述する名前を保持することができるため、この回答がさらに好きです。 – Sgene9
何ですか?この答えは意味をなさない! 2行目で宣言された変数 'name'を初期化することは決してありません。さらに、' self'変数は 'this'と同じです。それはOPが提供したコードとどのように違うのですか? –
@AaditMShahを修正しました。これはもっと意味がありました。 'function(){ this.name = ''; this.set = function(name){ this.name = name; < - this } } ' –
引数として別の名前を使用するだけで、プライベート変数name
がシャットダウンされず、関数set
の外側にあることがあります。機能を指していないthis`
var SomeClass = function() {
var name;
this.set = function(otherName) { // argument should have a diffirent name so it won't shadow the other variable "name"
name = otherName;
}
this.get = function() {
return name;
}
};
var ins = new SomeClass();
ins.set("Jim Carrey"); // OK
console.log(ins.get()); // OK
console.log(ins.name); // undefined as expected
これは正解です。同意する必要があります。 –
'。不完全で無効なコード例を提供したので、必要なものを正確に知るのは難しいですが、 'name'パラメータが' name'変数をシャドーイングしているという問題があります。もう1つは、変数を設定していないことです。 'this'で参照されるオブジェクトのプロパティを設定しています。 –
外部関数をクラスとして使用していますか? –