HTML 속성 vs DOM 프로퍼티

속성(attribute)과 프로퍼티(property)는 근본적으로 다른 개념이다.

핵심 차이점

HTML 직렬화

  • 속성은 HTML로 직렬화되지만, 프로퍼티는 그렇지 않다.

const div = document.createElement('div');

div.setAttribute('foo', 'bar');
div.hello = 'world';

console.log(div.outerHTML); // '<div foo="bar"></div>'

👉🏻 따라서 개발자 도구 요소 패널에선 요소의 속성만 확인할 수 있다.

값(value)의 타입

  • 속성 값은 항상 문자열이지만, 프로퍼티는 모든 타입이 가능하다.

const div = document.createElement('div');
const obj = { foo: 'bar' };

div.setAttribute('foo', obj);
console.log(typeof div.getAttribute('foo')); // 'string'
console.log(div.getAttribute('foo')); // '[object Object]'

div.hello = obj;
console.log(typeof div.hello); // 'object'
console.log(div.hello); // { foo: 'bar' }

Last updated