在 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 的克隆,而不是对原始实例的实际引用。
那么,有没有办法解决这个问题?有什么方法可以产生我想要的结果,有或没有with
?还是我注定要MyClass.prototype
一遍又一遍地写出来?