Dee*_*000 6 javascript object parent
我有一些JS你会在下面看到.我希望内部类对象能够访问它的父级.它需要访问父方法和属性.我完成它的方式是工作,但我想知道我是否可以在内部类构造函数中做一些事情来获取父级,而不是父级必须明确地告诉孩子它的父级是谁.看起来很笨重.
<html>
<body>
<script>
function ChildClass(name){
//this.myParent= no way of knowing .....
this.myName=name;
this.whereDidIComeFrom=function(){
document.write(this.myName+ " came from " +this.myParent.dad+"<br>");
}
}
function ParentClass(name){
this.dad=name;
this.myChild=new ChildClass(name+"son");
this.myChild.myParent=this; //only way I know for myChild to access parent
this.myChild.whereDidIComeFrom();
}
var parentDavid = new ParentClass("David");
var parentJohn = new ParentClass("John");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
运行的输出如下所示:
戴维森来自大卫
约翰逊来自约翰
我问,因为上面的结构已经存在于我正在维护的项目中.我不能重新设计整个事情.现在只有子对象必须访问它的父对象.以前它不需要.最好不要更改父类,并在子项中进行所有更改.但如果我得到的基本上是"你需要做什么"那么就这样吧.
原则上,这已经是正确的方法.你可以让它更有点漂亮,在子节点中提供一个introductionParent()函数,如果已经设置了父引用,那么它将检查,但这不会改变问题的核心.
虽然数据模型中的子项只能属于一个父项,但Javascript不知道这一点.例如,可能有几个父母引用同一个孩子(传闻有时会发生在自然界中).实际上,孩子不是父母的"内在阶级".孩子和父母仅仅是关联的,即"他们以某种方式彼此认识",这是一种未指明的关系,但两者都不是另一方的一部分(或财产).