【发布时间】:2011-09-24 14:07:52
【问题描述】:
我是一名经验丰富的 C++/Java 程序员,第一次使用 Javascript。我使用 Chrome 作为浏览器。
我已经创建了几个带有字段和方法的 Javascript 类。当我读取不存在的对象字段时(由于我的拼写错误),Javascript 运行时不会引发错误或异常。显然,这样的读取字段是“未定义的”。例如:
var foo = new Foo();
foo.bar = 1;
var baz = foo.Bar; // baz is now undefined
我知道我可以检查“Detecting an undefined object property in JavaScript”中提到的“未定义”是否相等,但这似乎很乏味,因为我经常在我的代码中读取对象字段。
当我读取未定义的属性时,有什么方法可以强制引发错误或异常?
为什么当我读取未定义的变量(而不是未定义的对象属性)时会引发异常?
【问题讨论】:
-
看看 JavaScript 代理。
-
这不会回答这个问题(停止阅读未定义的属性),但是如果您想防止由于错字而意外创建新属性(例如,如果您执行 foo.barr = 1 这会创建一个新的属性栏)。所以如果你想阻止它,你可以调用 Object.preventExtensions(foo);并将其与“严格模式”一起使用 - 应该会引发类型错误。
-
我建议您查看my answer,如果您觉得满意,请将其标记为已接受。我也遇到了同样的问题,目前,这是克服这个问题的最直接、最简单(干净)的解决方案。
标签: javascript