【发布时间】:2014-02-04 21:52:53
【问题描述】:
我检查对象上的属性,但它返回未定义,即使它存在。我假设我以错误的方式进行测试?
我运行这个
console.log(self.modules[moduleId]);
它会输出这个:
Object
composed: Array[2]
prototypes: Array[2]
slideshow: Slideshow
cardFront: false
currentSlide: 2
(所以“slideshow”是一个对象,是我的类“Slideshow”的一个实例。)
我更进一步做到这一点:
console.log(self.modules[moduleId].slideshow);
它返回未定义。
我的 if 语句看起来像这样,尽管上面可能足以解决我的问题。
if ( typeof( self.modules[moduleId].slideshow == 'undefined' ) ) {
【问题讨论】:
-
你能发布你的代码的 jsfiddle 吗?
-
如果
self.modules[moduleId]确实是您引用的对象结构,那么显然self.modules[moduleId].slideshow不是undefined。所以在问题的形成过程中丢失了一些东西。 -
@digitalextremist 不正确 - 在您的情况下,不应引用 'undefined'。
-
你的括号是错误的。
if(typeof self.modules[moduleId].slideshow == 'undefined')是正确的(或if((typeof self.modules[moduleId].slideshow) == 'undefined'),但这些都是不必要的)。而且,另一件事:请记住,这只检查.slideshow。如果modules[moduleId]在第一个位置中不存在,您仍然会收到错误 - 所以请先检查那个。 -
@aduch:并不是
()造成“歧义”,而是他们使表达错误。==将始终返回一个布尔值。typeof将始终为"boolean"和(),就像OP 的问题一样,因为()使typeof适用于表达式 而不是self.modules[moduleId]。
标签: javascript class object undefined