2013-10-28 2 views
0

У меня этот кодпочему это внутри литерал объекта равен другому объекту

var testObject = new TestObject(); 
testObject.init(); 

function TestObject() { 
    this.init = function() { 
     var uiCtrlDescriptors = { 
      "htmlElem": "elem", 
      "controller" : new Controller(this.htmlElem) 
     } 
    }  
} 

, и я не понимаю, почему this равно testObject внутри этой линии:

"controller" : new Controller(this.htmlElem) 

вместо того, чтобы быть равным до uiCtrlDescriptors объект?

ответ

2

Вот как работает this. Всякий раз, когда вы делаете:

obj.some_function(); 

затем some_function работает с this набором для obj.

+0

Спасибо, я это понимаю. Поэтому внутри объектных литералов 'this' всегда будет' testObject'? –

+0

объект литерал не имеет к этому никакого отношения; вы используете 'this' внутри функции, назначенной' init', а затем вы вызываете 'testObject.init()'. – Eevee

+0

Да, но вы можете [здесь] (http://jsfiddle.net/x4js6/), что 'this' изменяется в зависимости от того, какой объектный литерал он используется внутри. –

Смежные вопросы