You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
[obj.hasOwnProperty(key)](mdn:js/Object/hasOwnProperty)를 이용하면상속받은 프로퍼티를 순회 대상에서 제외할 수 있습니다. 이 내장 메서드는`key`에 대응하는 프로퍼티가상속받은 프로퍼티가 아니고`obj`에 직접 구현되어있는 프로퍼티라면`true`를 반환합니다.
281
+
[obj.hasOwnProperty(key)](mdn:js/Object/hasOwnProperty)를 이용하면상속 프로퍼티를 순회 대상에서 제외할 수 있습니다. 이 내장 메서드는`key`에 대응하는 프로퍼티가상속 프로퍼티가 아니고`obj`에 직접 구현되어있는 프로퍼티라면`true`를 반환합니다.
282
282
283
-
`obj.hasOwnProperty(key)`를 사용하면 아래 예시에서처럼상속받은 프로퍼티를 걸러낼수도 있고,상속받은 프로퍼티만을 대상으로 무언가를 할수 있습니다.
283
+
`obj.hasOwnProperty(key)`를 사용하면 아래 예시에서처럼상속 프로퍼티를 걸러낼수 있고,상속 프로퍼티만을 대상으로 무언가를 할수도 있습니다.
284
284
285
285
```js run
286
286
let animal= {
@@ -298,7 +298,7 @@ for(let prop in rabbit) {
298
298
if (isOwn) {
299
299
alert(`객체 자신의 프로퍼티:${prop}`);// 객체 자신의 프로퍼티: jumps
300
300
}else {
301
-
alert(`상속받은 프로퍼티:${prop}`);//상속받은 프로퍼티: eats
301
+
alert(`상속 프로퍼티:${prop}`);//상속 프로퍼티: eats
302
302
}
303
303
}
304
304
```
@@ -309,14 +309,14 @@ for(let prop in rabbit) {
309
309
310
310
`for..in` 안에 쓰인 메서드`hasOwnProperty`는`Object.prototype.hasOwnProperty`에서 왔다는 것을 그림을 통해 알 수 있습니다.
311
311
312
-
엇? 그런데상속받은 프로퍼티인`eats`는 얼럿 창에 출력되는데,`hasOwnProperty`는 출력되지 않았습니다. 무슨 일이 있는 걸까요?
312
+
엇? 그런데상속 프로퍼티인`eats`는 얼럿 창에 출력되는데,`hasOwnProperty`는 출력되지 않았습니다. 무슨 일이 있는 걸까요?
313
313
314
-
이유는 간단합니다.`hasOwnProperty`는 열거 가능한(enumerable) 프로퍼티가 아니기 때문입니다.`Object.prototype`에 있는 모든 메서드의`enumerable` 플래그는`false`인데,`for..in`은 오직 열거 가능한 프로퍼티만 순회 대상에 포함하기 때문에 얼럿창에 출력되지않았습니다.
314
+
이유는 간단합니다.`hasOwnProperty`는 열거 가능한(enumerable) 프로퍼티가 아니기 때문입니다.`Object.prototype`에 있는 모든 메서드의`enumerable` 플래그는`false`인데,`for..in`은 오직 열거 가능한 프로퍼티만 순회 대상에 포함하기 때문에`hasOwnProperty`는얼럿창에 출력되지않습니다.
315
315
316
-
```smart header="키-값을 순회하는 메서드 대부분은상속받은 프로퍼티를 제외하고 동작합니다."
317
-
`Object.keys`, `Object.values`와 같이 객체의 키-값을 대상으로 무언가를 하는 메서드 대부분은상속받은 프로퍼티를 제외하고 동작합니다.
316
+
```smart header="키-값을 순회하는 메서드 대부분은상속 프로퍼티를 제외하고 동작합니다."
317
+
`Object.keys`, `Object.values` 같이 객체의 키-값을 대상으로 무언가를 하는 메서드 대부분은상속 프로퍼티를 제외하고 동작합니다.
318
318
319
-
프로토타입에서 상속받은 프로퍼티는 *제외하고* 해당 객체에서 정의한 프로퍼티만 연산 대상에포함하죠.
319
+
프로토타입에서 상속받은 프로퍼티는 *제외하고*, 해당 객체에서 정의한 프로퍼티만 연산 대상에포함합니다.
320
320
```
321
321
322
322
##요약
@@ -327,4 +327,4 @@ for(let prop in rabbit) {
327
327
-`obj`에서 프로퍼티를 읽거나 메서드를 호출하려 하는데 해당하는 프로퍼티나 메서드가 없으면 자바스크립트는 프로토타입에서 프로퍼티나 메서드를 찾습니다.
328
328
- 접근자 프로퍼티가 아닌 데이터 프로퍼티를 다루고 있다면, 쓰기나 지우기와 관련 연산은 프로토타입을 통하지 않고 객체에 직접 적용됩니다.
329
329
- 프로토타입에서 상속받은`method`라도`obj.method()`를 호출하면`method` 안의`this`는 호출 대상 객체인`obj`를 가리킵니다.
330
-
-`for..in` 반복문은 객체 자체에서 정의한 프로퍼티뿐만 아니라상속받은 프로퍼티도 순회 대상에 포함합니다. 반면, 키-값과 관련된 내장 메서드 대부분은상속받은 프로퍼티는 제외하고 객체 자체 프로퍼티만을 대상으로 동작합니다.
330
+
-`for..in` 반복문은 객체 자체에서 정의한 프로퍼티뿐만 아니라상속 프로퍼티도 순회 대상에 포함합니다. 반면, 키-값과 관련된 내장 메서드 대부분은상속 프로퍼티는 제외하고 객체 자체 프로퍼티만을 대상으로 동작합니다.