Is there any way to distinguish between an unset property and a property set to undefined?
假设我有对象testObject = {a: undefined}。如果我这样做,我就不确定了。但如果我不存在,也会发生同样的情况。在javascript中,这里有没有办法区分a和b?我问的主要是出于好奇,我没有用例。
- 刚刚找到了一个可能的答案——使用Object.keys(testObject)。
- 我想你在找undefined和null。
- 不,我不是。我不知道会给你什么印象。我对javascript并不陌生。
- 因为你不熟悉javascript,所以你肯定知道developer.mozilla.org/en/docs/web/javascript/reference/…。这确实是你想要区分undefined和null的假设。如果没有,你的问题就没有多大意义…
- 如果你看我的个人资料,看看我投票最高的答案,那就特别有趣了。
- @我看不出有什么必要在这里开始战斗,我也很惊讶你这么沮丧。至少对我来说,你的问题太模糊了,没有什么意义——我写的是什么。我想你的问题是用副本回答的吧?
hasOwnProperty()方法返回一个布尔值,指示对象是否具有指定的属性作为自己的(不是继承的)属性。
在给定的情况下
1 2 3 4
| testObject = {a: undefined};
testObject.hasOwnProperty('a') //true
testObject.hasOwnProperty('b') //false |
- 只是一个指针。你应该试着解释一下为什么你所做的改变会奏效。仅仅说一句"以东"〔1〕并不是一个好答案。
在使用in运算符进行检查之前,实际上可以用附加条件进行区分。
1 2 3
| if(a in testObject) {
//yes .. now check whether it is undefined or not
} |
- in也将通过原型上的属性,并且对于不可枚举的属性将失败。
1
| testObject.hasOwnProperty('a') |
请注意,这只适用于您所显示的对象;从原型继承的属性不会通过此测试(这是hasOwnProperty的要点)。