即使属性存在,js对象也返回undefined

时间:2014-02-04 21:52:54

标签: javascript class object undefined

我检查一个对象的属性,但它返回undefined,即使它在那里。我假设我正在以错误的方式进行测试?

我跑这个

console.log(self.modules[moduleId]);

并输出:

Object

    composed: Array[2]

    prototypes: Array[2]

    slideshow: Slideshow

        cardFront: false

        currentSlide: 2

(所以“幻灯片”是一个对象,我的班级“幻灯片”的一个实例。)

我更进一步做到这一点:

console.log(self.modules[moduleId].slideshow);

它返回undefined。

我的if语句看起来像这样,虽然上面可能足以解决我的问题。

if ( typeof( self.modules[moduleId].slideshow == 'undefined' ) ) {

1 个答案:

答案 0 :(得分:2)

你的if子句中的parantheses是错误的。使用括号,typeof对比较表达式的值进行操作,该值始终为boolean

相反,请使用

if (typeof self.modules[moduleId].slideshow == 'undefined')

...如果对象上根本不存在slideshow,或者如果它存在但值为undefined,则为真。

或者使用in运算符

if ('slideshow' in self.modules[moduleId])

...如果对象或其原​​型具有属性,则无论其值如何,都将为真。

或使用hasOwnProperty

if (self.modules[moduleId].hasOwnProperty('slideshow'))

...如果对象本身(不是其原型)具有属性,则无论其值如何,都将为真。