Ell*_*lle 8 javascript nested object
是否可以在另一个对象中定义一个对象?我在想这样的事情:
function MyObj(name) {
this.name = name;
function EmbeddedObj(id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样创建一个EmbeddedObj:
var myEmbeddedObj = new MyObj.EmbeddedObj();
Run Code Online (Sandbox Code Playgroud)
奖励积分的Meme:对象!:○
小智 8
是的,不.
function MyObj(name) {
this.name = name;
}
MyObj.EmbeddedObj = function EmbeddedObj(id) {
this.id = id;
}
new MyObj.EmbeddedObj(42);
Run Code Online (Sandbox Code Playgroud)
会运行,但它可能不会产生"嵌入对象"的预期结果(请参阅注释).
请注意,在首先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;
Run Code Online (Sandbox Code Playgroud)