【发布时间】:2012-07-15 09:43:15
【问题描述】:
在 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?
【问题讨论】: