2010-12-29 6 views

답변

2

문제가 이미 대답, 그냥 그것도 명확하게하기 :

function myFunc(theObject) { 
     theObject = {make: "Ford", model: "Focus", year: 2006}; 
} 

는 비슷한 (이다 구문을 잊어 버려서 메시지를 받으십시오) :

function myFunc(theObject) { 
     theObject = new TheObject("Ford","Focus",2006); 
} 

즉, 매개 변수가 참조되지만 새 개체를 생성하여 해당 참조를 변경하려고합니다.

참고 : 자바 구문이 너무 인기가 있기 때문에 교훈적인 목적을 설명하기 위해 자바와 유사한 구문을 사용하여 완전히 새로운 인스턴스를 만드는 것으로 생각했습니다. "TheObject"는 클래스의 이름입니다.

+0

'TheObject'가 새로 추가 된 이유는 무엇입니까? 그것은 무엇을합니까? – DarkLightA

+0

'};'빠른 쓰기로 인해 – NickAldwin

+0

이 고정되어');'여야합니다. –

0

자바 스크립트는 사용자가 제공 한 변경 사항을 적용 할 때 원본 참조가 아닌 로컬 참조를 수정합니다. SO에이 게시물 도움이 될 것입니다

Is JavaScript a pass-by-reference or pass-by-value language?

+0

왜이 기능을 다운 그레이드 했습니까? 이게 맞지 않아? 다른 답변과 동일하게 들립니다. – adam0101

+0

확실하지 않습니다. 나는 훌륭한 예제와 설명으로 다른 SO 게시물을 언급 한 것 같아 용납되지 않습니다. –

9

당신이 myFunctheObject = { ... }을 수행 할 때 새로운 객체를 생성하고, 지역 변수 theObject에 해당 참조를 할당한다. 원본 개체는 변경되지 않습니다.

, 당신이 직접이 같은 속성을 수정해야 원본 객체의 내용을 수정하려면 :

theObject.make = 'Ford'; 
theObject.model = 'Focus'; 
theObject.year = 2006; 
+0

나는 이것을 얻지 않는다. 나는'myFunc'의'theObject'가 로컬 변수가 아닌'myFunc'에 전달 된 객체에 대한 참조라고 생각 했습니까? –

+0

그렇지만 그는 지역 변수에 새 객체를 할당하고 전달 된 객체의 속성은 수정하지 않습니다. – kemiller2002

+1

@Tola Odejayi :'theObject' 자체는'mycar'에 대한 참조가 아니며'mycar'에 대한 참조를 보유합니다. 'theObject'를 통해 mycar를 변경할 수 있지만, 다른 객체를 theObject에 할당하면 새로운 참조가 유지됩니다. – casablanca

0

변경이 :

function myFunc(theObject) { 
     theObject = {make: "Ford", model: "Focus", year: 2006}; 
    } 
다음

새 객체에 변수를 재 할당된다 . 매개 변수는 객체를 보유하는 변수에 연결되지 않으므로 원본은 변경되지 않습니다.

에 :. 이것은 당신이 전달 된 객체의 속성을 변경

function myFunc(theObject) { 
    theObject.make = "Ford"; 
} 

관련 문제