Javascript对象有父/子关系吗?

时间:2014-05-30 08:41:50

标签: javascript

以这段代码为例,忘记代码中实际发生的事情,想象一下这是任何js代码,我只选择了这个,因为它有点"很长&# 34;:

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

对象是否在左边"父母"右边的物体?或者他们都是"无关"而且只是"培养"缺少一个更好的词是另一个?

在编程意义上,我并不是说“#34; parent"和孩子" (比如xml或html)我的意思是它类似于一个真实的"孩子"和一个真实的父母"因为父母对孩子是独一无二的,而孩子对父母来说是独一无二的。这就是我加入" foster"部分(它们不一定是血液相关的......它们也不是永久地附着在左边的物体上)。

换句话说,右边的对象是否只是左边对象的子集?或者它们有时是共享的,有时不会被左边的其他对象共享?

2 个答案:

答案 0 :(得分:3)

general 中,不,没有排他性。考虑:

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的东西。

答案 1 :(得分:0)

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

因此,例如,如果您调用方法object.getElementsByTagName,它将只返回object的子项。所以在你的例子中,右边的对象是左边的对象,是的。

但是javascript对象通常没有理由拥有任何类型的层次结构。

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