我检查一个对象的属性,但它返回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' ) ) {
答案 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'))
...如果对象本身(不是其原型)具有属性,则无论其值如何,都将为真。