JavaScript では、次のようなクラスをシミュレートします。
function MyClass() {} // Constructor
MyClass.prototype.myField = "foo";
with
次のキーワードを使用して、コードを読みやすくし、キーストロークを節約できると考えました。
function MyClass() {} // Constructor
with (MyClass.prototype)
{
myField = "foo";
myOtherField = "bar";
myMethod = // etc
}
しかし、インスタンスを作成してこれらのフィールドのいずれかにアクセスしようとすると、undefined
. ただし、with (MyClass.prototype)
値を読み取ってから値を読み取ろうとすると、それは機能します。値を変更したり、新しいフィールドを作成しようとした場合にのみ失敗します。with (myObject)
これは、元のインスタンスへの実際の参照ではなく、myObject のクローンにスコープを設定しているためだと思います。
それで、これを回避する方法はありますか?out の有無にかかわらず、必要な結果を生成する方法はありwith
ますか? MyClass.prototype
それとも、何度も何度も書き出す運命にあるのでしょうか?