hasOwnProperty 和 in 有什么区别?

Hav*_*ven 1 javascript hasownproperty

当我有一个数组var user = { name : 'Bob'};时,使用以下指令有什么区别?

localuser = user.name;
localuser = 'name' in user ? user.name : 'bob';
localuser = user.hasOwnProperty('name') ? user.name : 'bob'
Run Code Online (Sandbox Code Playgroud)

Edu*_*omo 6

例子:

var o = { 'foo': 'bar' };

console.log('constructor' in o); // TRUE
console.log('foo' in o); // TRUE

console.log(o.hasOwnProperty('constructor')); // FALSE
console.log(o.hasOwnProperty('foo')); // TRUE
Run Code Online (Sandbox Code Playgroud)

拥有财产

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

如果指定的属性在指定的对象中,则 in 运算符返回 true。