[英]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;
现在a
和b
都具有引用c
属性。 对于这个问题:
c.a = a;
c.b = b;
现在c
具有指向a
和b
属性。 如果需要, a
可以有一个引用b
的属性。 (或b
到a
或两者兼有。)
在您提供的特定示例中,其他任何画布都不太可能使用画布的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.