什么';s相当于;有“U键”;用javascript?

什么';s相当于;有“U键”;用javascript?,javascript,python,Javascript,Python,您将如何用javascript编写此代码?in运算符 if dictionary.has_key('school'): : 您也可以使用,但有时会产生不希望的结果: if(Object.prototype.hasOwnProperty.call(dictionary, key)) { // ... 与操作员一起: console.log('watch' in dictionary); // always true 或者可能在更多浏览器中受支持: 在边境案件中可能存在问题: 不得使用

您将如何用javascript编写此代码?

in运算符

if dictionary.has_key('school'):
:

您也可以使用,但有时会产生不希望的结果:

if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
    // ...
与操作员一起:

console.log('watch' in dictionary); // always true
或者可能在更多浏览器中受支持:

在边境案件中可能存在问题:

不得使用
!=未定义
,因为未定义不是关键字:

但是你可以使用
!=空值
,对于
空值
未定义
和缺少的值为空:

if(dictionary.school != undefined) { …
您也可以尝试:

if(dictionary.school != null) { …
hasOwnProperty
方法仅在属性实际位于实例上时才计算为
true
,而不是简单地从原型继承而来,就像中的
一样

例如,求值
('toString'在myObject中)
将是
true
,而
myObject.hasOwnProperty('toString')
将是
false
甚至

if(dictionary.hasOwnProperty('school'))

请注意:
中的
操作符在Python中也是这样工作的,许多人发现它比
has_key()
方法更可取。@brandizzi,实际上,has_key已弃用,因此应避免使用。它什么时候会产生不希望的结果?@qwertymk:有时您希望它只为您在对象本身上添加的属性返回
true
,而不是为原型继承的属性返回。
中的
操作符更像Python的
hasattr
if(typeof(dictionary.school) !== 'undefined') { …
if(dictionary.school != undefined) { …
if(dictionary.school != null) { …
if(dictionary.hasOwnProperty('school'))
if(dictionary.school!=undefined)