2009-12-15 3 views
0

유효한 JavaScript 변수 이름이 아닌 변수 이름을 포함 할 수있는 API에서 반환 된 JavaScript에서 개체를 처리 중입니다. (이 이름은 사용중인 API 시스템의 명명 규칙에서 유효합니다.)양식 이름을 올바른 JavaScript 이름으로 변환하는 방법은 무엇입니까?

하나의 경우 이름은 숫자로 시작합니다 (예 : '5story'

이 이름을 유효한 JavaScript 변수 이름으로 변환하는 가장 좋은 방법은 무엇입니까?

(이 질문에 대한 유용한 대답은 이름에 $를 접두사로 붙인 다음 양식을 API로 반환 할 때 유용 할 수 있음)

당신이 (당신이 "양식"을 언급) 또는 자바 스크립트 HTML 식별자 이름에 대해 묻는다면 나는 확실하지 않다

+0

사용자가 preg_replace하고 제거 할 수 있습니까? – Steven

답변

1

주 (내가 자바 스크립트 API가 유효하지 않은 이름을 작성하지 않은 경우가 바람직하다고 주) 변수 식별자가 없지만 단어 문자가 아닌 문자 (A-Z, a-z, 0-9, _)를 제거하고 밑줄?

var v = ' .-*&*$*$W 5 foo Bar'; 
v = '_' + v.replace(/\W/g, ''); 
v; // _W5fooBar 

.replace()

not legal in variable identifiers을 문자를 제거합니다.

올바른 변수 이름에 밑줄 대신 $ 기호를 앞에 추가 할 수 있습니다.

1

원본 이름에 대한 역 참조를 포함하는 래퍼 개체를 생성 할 수 있습니다.

function MyApiClient() 
{ 
     var _self = this; 
     this.RegisterWrapper = function(strName, objValue, explicitName) 
     { 
       var newName = (explicitName != null) ? explicitName : '_' + strName.replace(/\W/g, ''); 
       _self[newName] = {ApiName : strName, Value : objValue}; 
       return _self[newName]; 
     } 
} 

//implementation 
var client = new MyApiClient(); 
client.RegisterWrapper('5story', [0,1,2,3,4,5]); 
console.log(client._5story.Value); //output: Array() [0,1,2,3,4,5]; 
//or 
var o = client.RegisterWrapper('5story', {a:'b'}, '_myName'); 
console.log(o.Value); //outpus Object a: 'b' 
console.log(client._myName.Value); //outpus Object a: 'b' 

이것은 몇 가지 추가 혜택

  • 범위를 확장 : 새로운가 캡슐화됩니다 객체가 아닌 전역
  • 을 만들 때 참조 :이 객체에 대한 참조가있는 경우 - API를 사용할 수 있습니다 (이전 이름이 포함되어 있기 때문에).
  • 유연성 : api에서 반환 된 문자열을 구문 분석하거나 위에서 명시 적 으로처럼 루프를 통해 동적으로 래퍼를 등록 할 수 있습니다.

실제 API에 대한 추가 정보가 있습니까?

+0

client._5story가 {ApiName : '5story', Value : [0, 1, 2, 3, 4, 5]}와 같은 객체를 인쇄하지 않습니까? 적어도 그것은 RegisterWrapper가 호출 될 때 MyApiClient 객체에 저장하는 것과 같습니다. – Juan

+0

ㅎ, 예 - 변경했습니다. 값 – Skawful

관련 문제