const test = new Date()
test.hasOwnProperty('getTime') // false
'getTime' in test // true
这意味着getTime
不在test
的原型中(不是它自己的原型),而是在层次结构的更上层(因为in
有效)。为什么会这样,我找不到解释这个的参考。这是由于如何定义getTime“属性”吗?
答案 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