hasOwnProperty('getTime')在日期对象上返回false

时间:2018-01-05 11:14:48

标签: javascript properties prototype

const test = new Date()
test.hasOwnProperty('getTime') // false
'getTime' in test // true

这意味着getTime不在test的原型中(不是它自己的原型),而是在层次结构的更上层(因为in有效)。为什么会这样,我找不到解释这个的参考。这是由于如何定义getTime“属性”吗?

2 个答案:

答案 0 :(得分:3)

hasOwnProperty没有查找原型链:

  

来自Object的每个对象都继承了hasOwnProperty方法。此方法可用于确定对象是否具有指定的属性作为该对象的直接属性;与in运算符不同,此方法不会检查对象的原型链。 (source

这就是hasOwnProperty经常被用于检查属性是否存在的原因 for...in循环:

for (key in obj) {
  if (obj.hasOwnProperty(key))
    // do stuff with obj[key]
  }
}

答案 1 :(得分:0)

res = requests.post('https://api.kairos.com/gallery/view_subject', headers=headers, files=files, data=values_enrol)它在原型中,因此当你使用getTime运算符时它会给出错误,它通过原型链委托,如果找到任何属性则返回true,否则为false