[英]JavaScript access parent object attribute
我在JS中有一个小问题,我有两个嵌套对象,我想从父进程中访问变量,如下所示:
var parent = {
a : 5,
child: {
b : 3,
displayA : function(){
console.log(this.a);
//undefined
},
displayB : function(){
console.log(this.b);
//displays 3
}
}
}
我想知道如何使parent.child.displayA工作:)(我有需要访问父变量的子对象)
任何帮助表示非常感谢!
您可以使用super.prop
访问父类属性。 当然,只有你使用的是ES6。
Javascript是基于原型的 ,它不是像PHP或Java那样的常规OOP语言。
看看继承和原型链,并实现简单的Javascript继承之类的东西。
如果它位于全局范围内,您可以通过window.parent
访问父级,但是您的示例在每种情况下都不起作用。
对象child
没有通用的方法知道它是父对象的成员。 在您的情况下,您可以直接引用displayA()
的父对象,如下所示:
displayA : function(){
console.log(parent.a);
}
您不需要将父项放在全局范围内,并使用window.parent
作为另一个答案建议; 因为您在parent
范围内声明displayA
,所以该函数将关闭parent
,并且可以在child
内的任何位置访问它。 由于封包含对一个参考parent
的对象,你会看到,以改变parent
会的行为来体现displayA
。 例如,假设parent
和child
在您的示例中定义,除了displayA
被修改为使用parent.a
。 然后:
parent.child.displayA(); //=> 5
parent.a = 10;
parent.child.displayA(); //=> 10
所有这些都说,如果你试图模仿OOP,那么另一个答案是正确的:你应该阅读更多关于Javascript原型链如何工作的内容。
我认为这样做并没有真正做到这一点,因为你只能通过其父对象访问子对象。 那么为什么要添加一个mthod displayB给孩子,同时你可以将它添加到有权访问所有子属性的父级。
在您的示例中,您没有继承。 你可以这样做
...
displayA : function(){
console.log(parent.a);
// 5
},
...
parent.child.parent = parent;
parent.child.displayA();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.