gpt4 book ai didi

javascript - 在 JavaScript 中定义一个 "nested"对象构造函数?

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:26 24 4
gpt4 key购买 nike

是否可以在另一个对象中定义一个对象?我在想这样的事情:

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 的情况下,表达式首先被求值 因此,在这种情况下,它使用从 求值的函数对象创建一个新对象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;

关于javascript - 在 JavaScript 中定义一个 "nested"对象构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com