---
# System prepended metadata

title: 筆記_Javascript基礎攻略 屬性檢查
tags: [javascript]

---

# 筆記_Javascript基礎攻略 屬性檢查
---
###### tags: `javascript`

當有個物件需要檢查這個物件的屬性時
可以直接
```javascript=
console.log(obj.name);

console.log(obj['name']);
```
但這還是有風險
如果屬性值剛好是undefined 就無法判斷了！

```javascript=
let obj = {
  class: undefined,
}

console.log(obj.class);  // undefined
```

所以改成使用 `in` / `hasOwnProperty()` 

```javascript=
let obj = {
  name:'Alex',
}

console.log('name' in obj); // true
console.log('age' in obj);  // false

console.log(obj.hasOwnProperty('name')); // true
console.log(obj.hasOwnProperty('age'));  // false

```

雖然兩者都可以檢查物件的屬性是否存在，但 hasOwnProperty() 方法不會往上檢查**物件的原型鏈 (prototype chain)**

只會檢查物件本身是否存在這個屬性，而 in 運算子則會繼續往物件原型鏈上檢查：

```javascript=
obj.hasOwnProperty('hasOwnProperty');    // false

'hasOwnProperty' in obj;                 // true
```




