关于javascript:有没有办法区分未设置的属性和设置为undefined的属性?

Is there any way to distinguish between an unset property and a property set to undefined?

本问题已经有最佳答案,请猛点这里访问。

假设我有对象testObject = {a: undefined}。如果我这样做,我就不确定了。但如果我不存在,也会发生同样的情况。在javascript中,这里有没有办法区分ab?我问的主要是出于好奇,我没有用例。


hasOwnProperty()方法返回一个布尔值,指示对象是否具有指定的属性作为自己的(不是继承的)属性。

在给定的情况下

1
2
3
4
  testObject = {a: undefined};

  testObject.hasOwnProperty('a') //true
  testObject.hasOwnProperty('b') //false


在使用in运算符进行检查之前,实际上可以用附加条件进行区分。

1
2
3
if(a in testObject) {
  //yes .. now check whether it is undefined or not
}


1
testObject.hasOwnProperty('a')

请注意,这只适用于您所显示的对象;从原型继承的属性不会通过此测试(这是hasOwnProperty的要点)。