繁体   English   中英

Javascript对象是否具有父/子关系?

[英]Do Javascript Objects Have a Parent/Child Relationship?

以下面的代码为例,忘记代码中实际发生的事情,而只是想象这是任何js代码,我之所以选择它是因为它有点“长”:

document.getElementById("myCanvas").getContext("2d").fillStyle="#FF0000";

这些对象是否在对象的左侧“父级”? 还是他们都是“无关”的,只是因为缺少更好的词而互相“养育”?

而且,这并不是从编程的意义上讲“父”和“子”(例如xml或html)的意思,它的意思是类似于实际的“子”和实际的“父”,因为父是对于孩子来说是唯一的,而孩子对于父母来说是唯一的。 这就是为什么我在“寄养”部分中添加了内容(它们不一定与血液相关……也不是它们永久地附着在左侧的对象上)。

换句话说,右边的对象是否仅是左边的对象的子集? 还是它们有时共享,有时不被左侧的其他对象共享?

通常 ,不存在排他性。 考虑:

var a = {};
var b = {};
var c = {};
a.foo = c;
b.bar = c;

现在ab都具有引用c属性。 对于这个问题:

c.a = a;
c.b = b;

现在c具有指向ab属性。 如果需要, a可以有一个引用b的属性。 (或ba或两者兼有。)

在您提供的特定示例中,其他任何画布都不太可能使用画布的2D上下文。 但这是画布,而不是JavaScript。 同样,在客户端JavaScript中,我们经常处理DOM元素,并且DOM具有父/子关系。 但这是DOM,而不是JavaScript。

您所描述的是DOM对象。 DOM具有分层结构。

因此,例如,如果调用方法object.getElementsByTagName ,它将仅返回object子代。 因此,在您的示例中,右侧的对象是左侧的对象的子集,是的。

但是一般来说,没有理由让javascript对象具有任何类型的层次结构。

obj1.getSomething().getSomethingElse().returnProperty()不必返回与obj1有任何关系的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM