是否可以在另一个对象中定义一个对象?我在想这样的事情:
function MyObj(name) {
this.name = name;
function EmbeddedObj(id) {
this.id = id;
}
}
然后我可以创建一个 EmbeddedObj,如下所示:
var myEmbeddedObj = new MyObj.EmbeddedObj();
奖励积分模因:Objectception! :o
是的,也不是。
function MyObj(name) {
this.name = name;
}
MyObj.EmbeddedObj = function EmbeddedObj(id) {
this.id = id;
}
new MyObj.EmbeddedObj(42);
可以运行,但它可能不会产生“嵌入对象”的预期结果(请参阅评论)。
请注意,在以下情况下new expr
表达式被求值first因此,在这种情况下,它使用评估的函数对象创建一个新对象MyObject.EmbeddedObj
作为构造函数。 (表达式中有一个带有括号的愚蠢规则,但那是另一个故事了。)
现在,如果需要“父”和“子”关系,可以使用更迂回的方法来完成:
function Parent (name) {
this.name = name;
var parent = this; // for closure
this.Child = function Child () {
this.Parent = parent;
}
}
// create new parent object
var parent = new Parent();
// each new parent has a different Child constructor and
// any function-object can be used as a constructor
var child = new parent.Child();
// true: child is "bound" to parent
child.Parent === parent;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)