[英]JavaScript access parent element
我需要在子元素的函数中访问包含元素的变量。 我该如何实现?
object = {
a : {
c : function() {
//need to access b here
},
d : 2
},
b : 1
};
在这种情况下,我需要访问函数c
的变量b
。 我用bind()
尝试了一些变体,但没有任何效果。 JavaScript访问父对象属性问题对我不起作用。 我无法到达变量object
,因为该对象嵌套得更深。
做a
成一个getter。
object = {
get a() {
var self = this;
return {
c: function() {
return self.b;
},
d: 2
}
},
b : 1
};
或者,例如,如果c
不需要this
来引用d
,则
object = {
get a() {
return {
c: () => this.b,
d: 2
}
},
b : 1
};
object
被深嵌套并不重要。 只需使用object.b
。
var object; ([{a:[{b:[{c:[{d:[{e:[{f: // deeply nested object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } }]}]}]}]}]}])[0].a[0].b[0].c[0].d[0].e[0].fac();
我喜欢Oriol的回答。 :-)
使用闭包的另一种选择。
([{a:[{b:[{c:[{d:[{e:[{f: // deeply nested (function (){ var object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } return object; })() }]}]}]}]}]}])[0].a[0].b[0].c[0].d[0].e[0].fac();
或者,如果可以的话,可以将对象创建移动到单独的函数中(可以命名该函数)。
function createHierarchy(){ return ([{a:[{b:[{c:[{d:[{e:[{f:createObject()}]}]}]}]}]}]); } function createObject(){ var object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } return object; } var hierarchy = createHierarchy(); hierarchy[0].a[0].b[0].c[0].d[0].e[0].fac();
从这里开始,使用DI容器只是一个步骤。 :-P
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.