はいといいえ。
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;