Dev-dotoli TIL

JS 32 data-type



Data type

demo35.html



primitive type


data의 형태

크게 두가지 : 객체와 객체가 아닌 것


  • 객체가 아닌 것

    • number : 숫자
    • string : 문자열
    • boolean : 불린
    • null : 값이 없는(의도)
    • undefined : 값이 지정되지 않은


  • 제외한 모든 것 : 객체



Wrapper object


Object access Operator가 동작하면

string을 wrapper object로 감싸서 객체처럼 사용하게 함

  • null / undefined 에는 wrapper object가 존재하지 않음
const str = "coding";

console.log(str.length);
//: 6

console.log(str.charAt(0));
//: c

//문자열이 담긴 str에 담긴 문자열 'coding'이 객체처럼 동작한다

//Object access Operator
//문자열은 primitive data지만
//문자열을 제어(작업)하기 위해서 객체인 것 처럼 취급

//str = new String('coding'); 인 것 처럼 동작시킴

Object access Operator

const str = "coding";
str.prop = "everybody";

console.log(str);
//: coding
console.log(str.prop);
//: undefined

//str.prop = "everybody"; 문자열이 담긴 str에
//prop이라는 property를 선언해줬지만 error가 나지않음
//하지만 .prop을 출력하면 undefined

//2행에서 실행될 때 Object access Operator가
//문자열을 객체인 것 처럼 취급해서 동작하게 되지만
//2행이 끝나고나면 다시 primitive data로 돌아갔기 때문

plus

위의 코드가 원래 의도했던 기능?

function Str(write) {
  this.write = write;
  this.prop = function () {
    return this.write + " everyday";
  };
}
const str = new Str("coding");
console.log(str.prop());
//: coding everyday
function Str(write) {
  this.write = write;
}
Str.prototype.prop = function () {
  return this.write + " everyday";
};
const str = new Str("coding");
console.log(str.prop());
//: coding everyday