2012-01-12 6 views
-1

익명 객체라는 용어는 혼동을 줄 수 있으므로 명확히 할 수 있습니다. 익명 객체 란 anon 함수를 정의하는 것과 같은 방식으로 객체의 선언을 의미합니다.익명 개체에 메서드를 선언 할 수 있습니까?

예 :

someFunction=function(){} 
someObject={} 

있지만 어디 이러한 개체 또는 함수의 변수를 배치 할 수있는 방식으로 구체적으로 익명이 배치 될 수있다. 예를 들어 Object.create 인 최상의 (직접 관련성이있는) 예가 window.setTimeout(function(){},ms) (그 함수의 쿼리를 따로 사용)과는 달리 변수 대신에 함수를 배치하면이 작업을 수행 할 수 있기를 원합니다. object.Create(some__proto__object,{cake:false}) 이는 모두 괜찮습니다. 내가 방법을 포함하려고 시도 할 때까지 멋장이. 그런 다음 을 던집니다. TypeError : 설명자가 object 여야합니다. 그래서

나는

variable={ 
    cake:"cheesecake", 
    taste:"celicious", 
    stateTheCatch:function(){console.log('The cake is a pie!')} 
} 

작동하지만,

//In practical use: 
//Object.create(inheritanceObject, 
{ 
    cake:"cheesecake", 
    taste:"celicious", 
    stateTheCatch:function(){console.log('The cake is a pie!')} 
}//); 

가 고장 나는 좋은 {} 모두 확인 {cake:"cheesecake",taste:"delicious"}에 넣어, 콘솔에서 몇 가지 테스트를 수행하고 개체로 계산되지 . 왜 이것이 나쁜가요? 식별자를 사용하는 것 외에도 Object.create의 두 번째 인수에 이와 같이 입력하기 때문입니다. 그래서 그것이 왜 그렇게 작동하지 않는 단서입니까?

+0

FYI : ECMAScript v3 spec은 javascript의 출처입니다. http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm, '3rd Edition'을 클릭하십시오. –

답변

3

개체를 전혀 만들지 않기 때문입니다. 명령문으로 사용될 때 대괄호는 객체 리터럴이 아닌 코드 블록을 작성합니다.

모든 코드는 대괄호로 묶을 수 있지만 많이 사용하지는 않습니다. (. 변수는 기능 범위를 가지고, 그래서 심지어 범위 변수를 않습니다)

{ 
    { 
    var x = 41; 
    { 
     { 
     x++; 
     } 
    } 
    } 
    alert (x); 
} 

는 값으로 객체를 사용하는 경우, 그것은 작동 : 자바 스크립트 기능에서

function x(y) { y.tateTheCatch(); } 

x({ 
    cake:"cheesecake", 
    taste:"celicious", 
    tateTheCatch:function(){console.log('The cake is a pie!')} 
}); 

는, 그래서 객체 다른 값을 사용하는 곳이면 어디에서나 함수 값을 사용할 수 있습니다. 매개 변수로 보내고 변수, 객체 속성 및 배열에 저장할 수 있습니다.

+0

와우, 고마워. 또한, 그런 식으로 당신은 단지 내 모든 오타를 아무렇지도 않게 복사했습니다. – TERMtm

+0

또한, 괄호가 완전히 고정 된 {...}을 (를) 둘러싼 것 같습니다. 아이디어를 주셔서 감사합니다, 고맙습니다. – TERMtm

+2

@TERMtm : 아무렇지도 않게 ... 오타가 무엇인지, 어떤 사람이 모국어가 아닌지 알기가 쉽지 않으므로 코드를 거의 변경하지 않으면 혼란이 자주 발생하지 않습니다. :) – Guffa

관련 문제