2017-04-07 67 views
1

说我有对象testObject = {a: undefined}。如果我然后console.log(testObject.a),我得到undefined。但是,如果我不存在,也会发生同样的情况。 JavaScript中有什么方法可以区分ab吗?我主要是出于好奇而问,我没有用例。有什么办法可以区分未设置的属性和设置为未定义的属性?

+1

刚刚找到一个可能的答案 - 使用'Object.keys(testObject)'。 – Aerovistae

+0

我认为你正在寻找'undefined'和'null' – JustARandomProgrammer

+0

不,我不是。我不知道会给你什么印象。我对JavaScript并不陌生。 – Aerovistae

回答

3

hasOwnProperty()方法返回一个布尔值,指示对象是否有指定的属性为自己(不继承)属性检验之前实际区别。

在特定情况下 -

testObject = {a: undefined}; 

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

只是一个指针。你应该试着解释你为什么会做出改变。只是说'尝试这个',不是一个好的答案 – Rajesh

3

可以有额外的条件使用in操作

if(a in testObject) { 
    //yes .. now check whether it is undefined or not 
} 
+0

'in'也将通过原型上的属性,并将失败的非枚举属性 – Rajesh

2
testObject.hasOwnProperty('a') 

注意,像你展示这只会为对象的工作;从原型继承的属性将不会通过此测试(这是hasOwnProperty的要点)。

相关问题