2015-11-26 2 views
0

Я новичок в объектной концепции javascript. На самом деле его хромой вопрос, но я хочу четко понимать эту концепцию.Связать этого родительского объекта с этим дочерним объектом в javascript

var objA = { 
a : 10, 
b : 20, 
newobjB : { 
    c : 100, 
    funOfObjB: function(){ 
    console.log(this.a) 
    } 
} 
} 

Здесь я хочу, чтобы получить значение переменной родительского объекта этого concept.I попробовал метод()

соединения, но это дает мне некоторые другие данные (это) переменной.

Спасибо за помощь

+0

'.Я попробовал Bind()' - вы явно не так как это не в коде, вывешенный. Если у вас возникла проблема с определенным фрагментом кода, имеет смысл опубликовать этот фрагмент кода, а не какой-либо другой фрагмент кода –

+1

В этом случае 'this' имеет контекст' newobjB', который не имеет 'a' свойство определено вообще. Если вы хотите, чтобы 'newobjB' наследовал свойства' objA', вам нужно использовать прототипное наследование. Другие подходы - используя 'objA.a' вместо' this.a' – Kamilius

+0

Javascript не имеет понятия родительского объекта. Один объект фактически не содержит другого, он просто ссылается на другой объект. Непонятно, что вы просите или что вы пытаетесь использовать '.bind()' for. Пожалуйста, уточните свой вопрос. – jfriend00

ответ

0

Там нет никакого способа, чтобы ссылаться objA через newobjB подобные.

objA просто ссылается на объект в виде объекта, называемого newobjB. Может быть несколько ссылок на objA.newobjB - это не соотношение 1 к 1. Вы должны предоставить objA к объекту на newobjB ссылаться обратно к нему , как:

var objA = { 
    a : 10, 
    b : 20, 
}; 

objA.newobjB = { 
    objA: objA, 
    c : 100, 
    funOfObjB: function(){ 
     console.log(this.objA.a) 
    } 
}; 

Конечно вы можете опустить прикрепление objA как свойство newobjB здесь, но я показываю где вам нужна обратная ссылка через this.

Если вы хотите this обратиться к objA в funOfObjB, то вы можете использовать call или apply:

objA.newobjB.funOfObjB.call(objA); 
Смежные вопросы