2013-12-11 2 views
0

일부 JSON으로 응답하는 API에 액세스하려고했습니다. 따라서 API (URL, 토큰, ID 등)에 액세스하는 데 필요한 모든 데이터를 저장하는 'options'객체를 구성하려고합니다. 작동 JavaScript Options-Object를 선언하는 적절한 방법은 무엇입니까?

다음 버전 :

var Options = function (token, id) { 
    this.token = token; 
    this.id = id; 
    this.host = 'http://super-cool-api.com/'; 
    this.path = 'api/fetch/id/'; 
    this.url = '' + this.host + this.path + this.id + '?token=' + this.token 
}; 
var options = new Options('abc', 3); 

// options.url = "http://super-cool-api.com/api/fetch/id/3?token=abc" 

기본적으로 'options.url는'내가 원하는 전부입니다. 하지만이 같은 '옵션'개체에 대한보다 포괄적 인 형태를 선언 시도했다 :

좋아
var options = { 
    token : 'abc', 
    id : 3, 
    host : 'http://super-cool-api.com/', 
    path : 'api/fetch/id/', 
    url : '' + this.host + this.path + this.id + '?token=' + this.token 
}; 

// options.url = "undefinedundefinedundefined?token=undefined" 

, 나는 어떻게 든 다른 options.url의 값에 액세스 할 필요가 있음을 이해했다. 그러나 어떻게? 심지어 이것이 일반적인 관행입니까?

첫 번째 해결책은 무엇입니까? 이런 식으로하는 것이 좋습니까?

감사합니다, 크리스토프

답변

2

this을 예제에서는 코드가 들어있는 객체를 가리 킵니다 (예 : options). 그 이유는 변수가 정의되지 않은 이유입니다. 첫 번째 해결 방법은 다음과 같습니다.

function makeOptions(token, id) { 
    var host = 'http://super-cool-api.com/', 
     path : 'api/fetch/id/'; 
    return { 
     token: token, 
     id: id, 
     host: host, 
     path: path, 
     url: '' + host + path + id + '?token=' + token 
    }; 
} 

가장 적합한 솔루션을 선택하십시오.

1

당신이 그 일을의 표준/가장 허용 방법에 관해서는, 나는 정말 모르겠다이 일의 확인 방법입니다 보여 두 가지 방법. 여기

당신이 제대로 작동하려면 보여준 두 번째 옵션을 얻는 방법의 예입니다

옵션의 url이 URL을 구축하고이를 반환하는 함수로 설정합니다.

var options = { 
    token : 'abc', 
    id : 3, 
    host : 'http://super-cool-api.com/', 
    path : 'api/fetch/id/', 
    url : function() { 
     return '' + this.host + this.path + this.id + '?token=' + this.token; 
    } 
}; 

그리고 당신은 다음과 같은 사용하여 값을 검색 할 수 있습니다 : 두 번째에 여기

var testUrl = options.url();이 예 모두 예 JSFiddle 플러스, 내 예 (옵션 3) 불행하게도

관련 문제