javascript引用未定义的属性

Pur*_*rge 5 javascript firefox firefox-addon

使用Firefox,处理Firefox扩展,我不断得到一个javascript警告:

reference to undefined property mySidebar.context.netProgress
Run Code Online (Sandbox Code Playgroud)

我尝试了多种测试方法:

if (mySidebar.context.netProgress === undefined) {
Run Code Online (Sandbox Code Playgroud)

if (typeof mySidebar.context.netProgress == "undefined") {
Run Code Online (Sandbox Code Playgroud)

if (!mySidebar.context.netProgress) {
Run Code Online (Sandbox Code Playgroud)

if (mySidebar.context.netProgress == undefined) {
Run Code Online (Sandbox Code Playgroud)

然而,Firefox中的错误控制台每次都会在同一行上给我发出警告,有问题的行是我从上面发布代码的行.实际检查该值是导致警告.

我还发出警告来检查mySidebar.context的值,它始终是一个对象,因此我不会从父节点获得警告.

有任何想法吗?

And*_*y E 6

正如Swingley所说,您可以使用Object.prototype.hasOwnProperty()来检查对象上是否存在直接属性.但是,这不适用于从原型链继承的属性.对于这两种情况,继承和直接,您可以使用in运算符:

if ("netProgress" in mySidebar.context) {
Run Code Online (Sandbox Code Playgroud)


Der*_*ley 3

尝试对象。拥有自己的属性()

if (mySidebar.context.hasOwnProperty("netProgress")) {
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“hasOwnProperty”检查属性的*存在*,该属性可能存在*并且*其值可能是“未定义”,另请参阅:[Javascript 中未定义和未定义之间的区别](http:// stackoverflow.com/questions/3420071/未定义和未定义-in-javascript之间的差异/3420160#3420160) (2认同)