获取自定义对象的特定属性

时间:2020-06-23 12:39:05

标签: javascript object

我有一个CustomEvent对象,我需要为其检索特定的属性。该对象不是普通对象,而是new CustomEvent();的结果。在[Chrome]浏览器控制台中输出该对象时,会看到以下内容:

CustomEvent{
   bubbles: false
   cancelBubble: false
   cancelable: false
   composed: false
   currentTarget: Window {...}
   defaultPrevented: false
   detail: {...}
   eventPhase: 0
   isTrusted: false
   path: [Window]
   returnValue: true
   srcElement: Window {...}
   target: Window {...}
   timeStamp: 4979.4150000670925
   type: "resize_element"
}

使用Object.keys(custom_event_obj)时,我只会得到一个密钥,isTrusted。这意味着isTrusted是唯一可枚举的密钥。

我使用以下代码进行确认:

for(var key_str in custom_event_obj)
{
   console.log(key_str, 'property is enumerable =', custom_event_obj.propertyIsEnumerable(key_str))
}

我得到以下结果:

isTrusted is enumerable = true
detail is enumerable = false
initCustomEvent is enumerable = false
NONE is enumerable = false
CAPTURING_PHASE is enumerable = false
AT_TARGET is enumerable = false
BUBBLING_PHASE is enumerable = false
type is enumerable = false
target is enumerable = false
currentTarget is enumerable = false
eventPhase is enumerable = false
bubbles is enumerable = false
cancelable is enumerable = false
defaultPrevented is enumerable = false
composed is enumerable = false
timeStamp is enumerable = false
srcElement is enumerable = false
returnValue is enumerable = false
cancelBubble is enumerable = false
path is enumerable = false
composedPath is enumerable = false
stopPropagation is enumerable = false
stopImmediatePropagation is enumerable = false
preventDefault is enumerable = false
initEvent is enumerable = false

Object.getOwnPropertyNames也只给我一个键:isTrusted

此列表包含未出现在浏览器控制台结果中的键。

我只想获取出现在浏览器控制台中的键。如何从上面的完整列表中过滤掉这些键?

1 个答案:

答案 0 :(得分:0)

Object.getOwnPropertyNames也只给我一个密钥:isTrusted。

不适合我

> head(counties)
        date    county state  fips cases deaths dummy
1 2020-01-21 Snohomish     0 53061     1      0     0
2 2020-01-22 Snohomish     0 53061     1      0     0
3 2020-01-23 Snohomish     0 53061     1      0     0
4 2020-01-24      Cook     0 17031     1      0     0
5 2020-01-24 Snohomish     0 53061     1      0     0
6 2020-01-25    Orange     0  6059     1      0     0
> str(counties)
'data.frame':   218627 obs. of  7 variables:
 $ date  : Date, format: "2020-01-21" "2020-01-22" "2020-01-23" ...
 $ county: Factor w/ 1774 levels "Abbeville","Acadia",..: 1468 1468 1468 379 1468 1178 379 1468 979 942 ...
 $ state : num  0 0 0 0 0 0 0 0 0 0 ...
 $ fips  : int  53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ...
 $ cases : int  1 1 1 1 1 1 1 1 1 1 ...
 $ deaths: int  0 0 0 0 0 0 0 0 0 0 ...
 $ dummy : int  0 0 0 0 0 0 0 0 0 0 ...

> print(a)
   cases 
96.10503 
> print(b)
cases 
  NaN 
> print(c)
   cases 
450.3478 
> print(d)
cases 
  NaN 

但是,尽管这确实为您提供了属性名称,但是您仍然必须遍历对象并获取属性的值。

您还可以使用.hasOwnProperty来枚举未继承的属性。

let CustomEvent = {
   bubbles: false,
   cancelBubble: false,
   cancelable: false,
   composed: false,
   currentTarget: null,
   defaultPrevented: false,
   detail: null,
   eventPhase: 0,
   isTrusted: false,
   path: [],
   returnValue: true,
   srcElement: null,
   target: null,
   timeStamp: 4979.4150000670925,
   type: "resize_element"
}

console.log(Object.getOwnPropertyNames(CustomEvent));