2017-02-02 1 views
0

함수를 통해 객체를 만들려고하지만 getter 함수의 구문을 파악할 수 없습니다. 테스트 기능 내에서 함수 내에서 자바 스크립트 getter 함수

var myObject = 
{ 
    0:123, 

    get a() 
    { 
     return this[0]; 
    } 
} 


console.log("This works: " + myObject.a); 


function test() 
{ 
    this[0] = 123; 

// error 
    this.a = get function() 
    { 
    return this[0]; 
    }; 
} 


var myTest = new test(); 

console.log(myTest.a); 

는 get 함수의 할당은 누락 된 세미콜론 오류가 발생 내가 키워드 "기능"을 제거하면, 그것은 GET은 정의되지 않은 것을 말한다.

내 함수 내에서 현재 객체에 게터 기능을 할당하려면 어떻게해야합니까?

+0

나는() 함수를 얻을 =은'VAR f를 생각하지 않습니다를 {...} '구문이 정확하다면 대신'var f = get {...}'을 사용하십시오. 함수'test'는 구문 분석에 실패하고, function()을 제거하면 작동합니다. – Aaron

+1

[getter 정의] (https://developer.mozilla.org)에 사용할 올바른 구문이 아니기 때문에 오류가 발생합니다/ko-ko/docs/Web/JavaScript/Guide/Working_with_Objects # Defining_getters_and_setters) –

답변

2

이 같은 시도 할 수 :

var myObject = 
{ 
    0:123, 

    get a() 
    { 
     return this[0]; 
    } 
} 


console.log("This works: " + myObject.a); 


function test() 
{ 
    this[0] = 123; 

    Object.defineProperties(this, {"a": { get: function() { 
     return this[0]; 
    }}}); 
} 


var myTest = new test(); 

console.log(myTest.a); 
+0

내가 시도한 것과 유사한 간단한 버전이 있습니까? 아니면이 유일한 방법입니까? – John

+0

나는 그렇게 생각하지 않는다. 짧은 방법은 객체 리터럴에서만 사용할 수 있습니다. \t 이것은 내가 얻을 수있는만큼 가깝고,이 경우에는 'this'를 되돌려주지 않습니다. 기능 검사() { \t \t \t \t \t 창 { \t \t "0"(123) \t \t A() { \t \t \t 복귀 받기 [ "0"]; \t \t} \t \t \t \t \t} \t} –

0

어쩌면이 당신을 위해 작동합니다

 function test() 
     { 
      this[0] = 123; 

      Object.defineProperty(this, "a", { get: function() { return this[0]; } }); 
     } 
관련 문제