ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 객체
    자바스크립트,제이쿼리 2019. 10. 7. 23:12

    객체의 본질은 컨테이너입니다. 컨네이터의 내용물은 시간이 지나면서 바뀔 수 있지만, 내용물이 바뀐다고 컨테이너가 바뀌는 건 아닙니다. 즉, 여전히 같은 객체입니다. 객체에도 중괄호를 사용하는 리터럴 문법이 있습니다.

    객체의 콘텐츠는 프로퍼티 또는 멤버라고 부릅니다. 프로퍼티는 이름(키)과 값으로 구성됩니다. 프로퍼티 이름은 반드시 문자열 또는 심볼이어야 하며, 값은 어떤 타입이든 상관없고 다른 객체여도 괜찮습니다.

    프로퍼티 이름에 유효한 식별자를 써야 멤버 접근 연산자( . )를 사용할 수 있습니다.

    프로퍼티 이름에 유효한 식별자가 아닌 이름을 쓴다면 계산된 멤버 접근 연산자를( [ ] ) 써야 합니다. 프로퍼티 이름이 유효한 식별자여도 대괄호로 접근할 수 있습니다.

    var obj = {};
    obj.color = "yellow";
    obj["not an identifier"] = 3;
    obj["not an identifier"]; //3
    obj["color"]; //yellow

     프로퍼티 값도 객체가 될 수 있다.

    var sam = {
    	name : 'Sam',
        classification : {
        	kindom : 'Anamalia',
            family : 'Felidae',
        },
    };

    sam의 family에 접근하는 방법은 여러가지이다.

    sam.classification.family;
    sam["classification"].family;
    sam.classification[family];
    sam[classification][family];

    객체에 함수를 담을 수도 있다. 

    sam.speak = functiion() { return "Meow!"; };
    sam.speak(); // "Meow!"

    객체에서 프로퍼티를 제거할 때는 delete 연산자를 사용한다.

    delete sam.classification;
    delete sam.speak;

     

    for in 문과 객체 프로퍼티 출력

    // 객체 리터럴을 통한 foo 객체 생성
    var foo = {
    	name : 'foo',
        age : 30,
        major : 'computer science'
    }
    
    // for in 문을 이용한 객체 프로퍼티 출력
    var prop;
    for (prop in foo) {
    	console.log(prop, foo[prop]);
    }

    위와 같이 for in 문이 수행되면서 prop 변수에 foo 객체의 프로퍼티가 하나씩 할당된다. 따라서 prop에 할당된 프로퍼티 이름을 이용해서 foo[prop]와 같이 대괄호 표기법을 이용해서 프로퍼티값을 출력한 것이다.

     

    객체 프로퍼티 삭제

    var foo = {
      name : 'foo',
      nickname : 'babo'
    };
    
    console.log(foo.nickname);
    delete foo.nickname;
    console.log(foo.nickname);
    
    delete foo;
    console.log(foo.name);

    자바스크립트에서는 객체의 프로퍼티를 delete 연산자를 이용해 즉시 삭제할 수 있다. 여기서 주의할 점은 delete 연산자는 객체의 프로퍼티를 삭제할 뿐, 객체 자체를 삭제하지는 못한다는 것이다.

     

    참조에 의한 함수 호출 방식

    기본타입과 참조타입의 함수 호출 방식은 다르다. 기본타입의 경우는 값에 의한 호출(call by value)방식으로 동작하며

    참조타입의 경우는 참조에 의한 호출(call by reference)방식으로 동작한다.

    var a = 100;
    var objA = {value : 100};
    
    function changeArg(num,obj) {
        num = 200;
        obj.value = 200;
    
        console.log(num);
        console.log(obj);
    }
    
    changeArg(a, objA);
    
    console.log(a);
    console.log(objA);

     

    '자바스크립트,제이쿼리' 카테고리의 다른 글

    자바스크립트 콜백  (0) 2019.10.15
    자바스크립트 스코프  (0) 2019.10.13
    자바스크립트 null과 undeifned  (0) 2019.10.07
    자바스크립트 함수  (0) 2019.10.06
    $.getJSON, $.ajax  (0) 2019.06.27
Designed by Tistory.