2014-09-11 2 views
0

Я пытаюсь создать объект с селекторами внутри. Первый - это селектор контекста, который я хочу использовать внутри самого объекта. Как я могу ссылаться на этот ключ внутри объекта?Как я могу ссылаться на ключ во время создания объекта в Javascript?

var options = { 
      elements: { 
       "context": $('form#someForm'), 
       "someDropdown" : $("#someDropDown", this.context), 
       "someContainer" : $('div#someContainer', this.context), 
      }, 
      constants: { 
       buttonImageLocation : 'image.jpg' 
      }   
     }; 

Благодаря

+0

'' someDropdown ": $ (" # someDropDown ", $ ('form # someForm')),' ?? зачем пытаться использовать «this.context»? Возможно, в этом вопросе есть еще кое-что. – davidkonrad

ответ

1

JavaScript создает для каждой функции новой области, а не для каждого блока. Таким образом, в вашем случае this относится к окну, и поскольку окно не имеет context, оно не определено. Вы можете сделать что-то вроде:

var options = { 
    element: new (function() { 
     this.context = $('form#someForm'); 
     this.someDropdown = $("#someDropDown", this.context); 
     ... 
     return this; 
    })() 
} 
+0

Привет, могу спросить, почему в конце() есть два скобки, поскольку это означало бы, что это будет выглядеть как function() {...}() –

+0

'(function() {...})()' непосредственно вызывает функцию. Не ссылаясь на это, ваше свойство элемента будет функцией, а не объектом. –

+0

Привет Я только что попробовал, и он работает, но я сделал console.log (options.elements), и он дал мне большой список всех вещей в окне, а не то, что находится внутри самого объекта. Мой вопрос: было бы лучше, если бы я создавал переменную контекста за пределами объекта, а затем ссылалась на него? Или это новый способ быстрее? –