2014-12-28 7 views
0
var events = { 
       addEvent: function(element, type, fn, capture){ 
        element.addEventListener(type, fn, capture); 
       }, 
       removeEvent: function(){ 
        element.removeEventListener(type, fn, capture); 
       } 
      } 

개체 브래킷 표기법 내가 코드 이벤트 객체를 줄이기 위해 객체 리터럴 정의에이 같은 뭔가를 loking있어

  var events = { 
          [action + "Event"]: function(element, type, fn, capture){ 
            element[action + "eventListener"](type, fn, capture); 
         } 
       } 
      } 

는 내가 거기 알고 그냥 예입니다

element.events.add(....) , element.events.remove(....) 

또는이 옵션 같은 다른 옵션은

element.events("add", type, fn, capture)/element.events("remove", type, fn, capture) 
+0

JavaScript에서는 불가능합니다. 객체 이니셜 라이저에서 속성 이름은 상수 여야합니다. – Pointy

+0

aproach가 가장 좋습니다. –

+0

동적으로 구성된 이름을 가진 프로퍼티를 별도의 대입 문과'[] '연산자로 추가 할 수 있습니다. – Pointy

답변

1

개체 초기화 프로그램의 속성 이름은 상수 여야합니다. 그러나 객체에 속성을 추가하고 동적으로 이름을 만들 수 있습니다.

var events = { 
      addEvent: function(element, type, fn, capture){ 
       element.addEventListener(type, fn, capture); 
      }, 
      removeEvent: function(){ 
       element.removeEventListener(type, fn, capture); 
      } 
     }; 

events[action + "Event"] = function() { /* ... */ }; 
+0

u 처음에는 빈 객체를 만들고 괄호 표기법을 사용하여 함수를 정의해야합니까? –

+0

@CameronA 예 - 개체를 만든 후에 원하는 모든 속성을 추가 할 수 있습니다. 그러나 객체 이니셜 라이저 자체에서 속성 이름은 상수 여야합니다. – Pointy

+1

EcmaScript 6에는 Computed Property Name (계산 속성 이름)이라는 항목이 있으며 정확히 내가 뭘 찾고 있습니까 –