Javascript オブジェクトがあるとします (中括弧はそうであることを示します)。
{
a: function (something) {
return something*2;
},
b: function () {
var c = this.a(2); //Does not work. Why?
return c;
}
}
これに対する回避策は何ですか?
Javascript オブジェクトがあるとします (中括弧はそうであることを示します)。
{
a: function (something) {
return something*2;
},
b: function () {
var c = this.a(2); //Does not work. Why?
return c;
}
}
これに対する回避策は何ですか?
メソッドにアクセスするb
と、コンテキストが作成したオブジェクトのインスタンスではないため、バインドされたコンテキストまたはオブジェクトで検索しようとするため、機能しませんwindow
。
var x = {
a: function (something) {
return something*2;
},
b: function () {
var c = x.a(2); //Does not work. Why?
return c;
}
}
このようにx
as コンテキストを使用してメソッドにアクセスしていますa
。
または、new
演算子を使用してオブジェクトとメソッドをプロトタイプまたはダイレクト メソッドとして作成することもできます。
実行すると、結果は次のようになります。
var x = function() {
return {
a: function (something) {
return something*2;
},
b: function () {
var c = this.a(2); //Does not work. Why?
return c;
}
}
}
新しいインスタンスを作成するとprototype
fromが失われますが、コードは機能します。x
例:
var y = new x();
console.log(y.b());
a
それは私のために働きます、あなたは宣言の後に昏睡状態を逃していました。
{
a: function (something) {
return something*2;
}, // -> this one
b: function () {
var c = this.a(2);
return c;
}
}
b
関数を呼び出すと、 a(2)
2 *2=が返されます。4
alert(p.b());