객체에 프로퍼티를 자유롭게 추가할 수 있다.
<script>
//JavaScrpt의 객체는 프로퍼티를 자유롭게 추가할 수 있다.
//기존 객체도 원하는 대로 프로퍼티를 추가할 수 있다.
const hong = {
name: '홍길동'
};
hong.age = 20;
const now = new Date();
console.log(now);
now.color = 'yellow'; //사용자 정의 프로퍼티
console.log(now.color); //yellow
now.check = function() {
console.log('check');
};
now.check();
</script>
잘 몰랐던 사실
window 객체
window.open()
window.close()
+
window.alert()
window.confirm()
window.prompt()
window.setTimeout()
window.stInterval()
이름없이 나오는 함수는 거의 window 객체이다.
(최상위 객체 window는 생략이 가능한 특징때문)
콘솔 창에 window라고 검색하면 window의 프로퍼티가 조회된다.
<script>
function m1() {
alert('m1');
}
</script>
JavaScript의 모든 함수는 자동으로 window 객체의 프로퍼티가 된다.
<script>
var a1 = '홍길동';
</script>
JavaScript의 모든 전역변수는 자동으로 window 객체의 프로퍼티가 된다.
엄밀히 따지면 a1은 변수가 아니라 프로퍼티이다.
<script>
var a1 = '홍길동';
var a1 = '이순신';
</script>
중복 선언이 가능한 것도 변수를 중복 선언한 것이 아니라 프로퍼티를 호출한 것이기 때문에 가능했다.
let, const는 프로퍼티로 등록이 안된다.
객체의 프로퍼티를 탐색하는 루프
내부구조를 확인할 때 사용한다.
<script>
const obj = {
name: '객체',
age: 20
}
//제어문
for (let p in obj) {
console.log(p);
}
</script>
값을 접근하고자하면 맵형태로 접근한다.
for (let p in obj) {
console.log(p, obj[p]);
}
<script>
for (let p in window) {
console.log(p, obj[p]);
}
</script>