有没有办法区分未设置的属性和设置为未定义的属性?

时间:2017-04-07 10:30:40

标签: javascript

说我有对象testObject = {a: undefined}。如果我然后console.log(testObject.a),我会得到未定义。但是,如果我console.log(testObject.b)不存在,也会发生同样的情况。 JavaScript中是否有任何方法可以区分ab?我主要是出于好奇,我没有用例。

3 个答案:

答案 0 :(得分:3)

在使用in运算符

进行检查之前,您实际上可以区分额外条件
if(a in testObject) {
  //yes .. now check whether it is undefined or not
}

答案 1 :(得分:3)

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

在特定情况下 -

  testObject = {a: undefined};

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

答案 2 :(得分:2)

testObject.hasOwnProperty('a')

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