Javascript:检查对象是否具有属性

seb*_*sse 27 javascript properties object

这里有几个答案如何检查对象中是否存在属性.

我一直在使用

if(myObj.hasOwnProperty('propName'))
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有任何区别

if('propName' in myObj){
Run Code Online (Sandbox Code Playgroud)

ade*_*neo 45

它们几乎是相同的,区别在于hasOwnProperty不会检查原型链,而in确实如此.

一个例子

var test = function() {}

test.prototype.newProp = function() {}

var instance = new test();

instance.hasOwnProperty('newProp'); // false
'newProp' in instance // true
Run Code Online (Sandbox Code Playgroud)

小提琴

如上所述,Object.hasOwnProperty只返回"自有属性",即直接添加的属性,而不是添加到的属性prototype.