2013-06-18 5 views
0

Я пытаюсь получить доступ к переменной в A из B (в моем примере ниже). Я не расширил B от A, потому что A - это просто контейнер.Как получить доступ к родительской переменной из дочернего элемента

function A() { 
    var Parent = this; 
    this.container = []; 
} 

A.prototype.add = function(Item) { 
    Parent.container.push(Item); 
} 

function B() { 

} 
B.prototype.exec = function() { 
    console.log(Parent.container[0]) //Uncaught ReferenceError: Parent is not defined 
} 

var Manager = new A(); 
var Item = new B(); 
Manager.add(B); 
Item.exec(); 

Как получить доступ к Parent от Item?

+0

Вы не можете. В вашем примере «Item» - это просто элемент в '' контейнере '' '' менеджера'. Он не имеет ни малейшего представления о том, где он находится, или о том, к чему он имеет доступ в своей родительской области. Что-то, что вы могли бы сделать, это поместить новое свойство в 'B', например' parent'. Затем в вашем '' '' методе 'add' вы устанавливаете' Item.parent = this; '. Затем из ваших методов 'B' вы можете получить доступ к этому элементу. Или сделайте обратное - пусть 'B' принимает родителя как аргумент – Ian

ответ

0
function A() { 
    this.container = []; 
} 

A.prototype.add = function(Item) { 
    //assigning parent property only if Item is added 
    Item.Parent = this; 
    this.container.push(Item); 
} 

function B() { 
    this.Parent = null; 
} 
B.prototype.exec = function() { 
    console.log(this.Parent.container[0]) 
} 

var Manager = new A(); 
var Item = new B(); 
Manager.add(Item); 
Item.exec(); 
0
function A() { 
    this.container = []; 
} 

A.prototype.add = function(Item) { 
    this.container.push(Item); 
} 

function B(Parent) { 
    this.Parent = Parent; 
} 
B.prototype.exec = function() { 
    console.log(this.Parent.container[0]) //Uncaught ReferenceError: Parent is not defined 
} 

var Manager = new A(); 
var Item = new B(Manager); 
A.add(B); 
B.exec(); 
Смежные вопросы