Adding a constructor to a property of a 'parent' obj

Adding a constructor to a property of a 'parent' object

本文关键字:obj parent of constructor to property Adding      更新时间:2023-09-26

这样做可以吗?

var MyObj = function() {};
var MyObj.prototype.thing = function() {};
MyObj.SubObj = function() {}
MyObj.SubObj.prototype.thing = function() {}
var ins = new MyObj();
var another = new MyObj.SubObj();

在这段代码中MyObj的行为就像一个父类,因为我已经分配了MyObj。SubObj是另一个构造函数,有自己的原型链。

可以像这样在另一个构造函数上嵌套一个构造函数吗?

完全可以这样做,但是它没有做任何特别的事情。特别是,MyObjMyObj.subobj之间没有任何继承关系,MyObj.prototype.thingMyObj.subobj.prototype.thing函数之间也没有任何联系。

我也不会叫它嵌套。这里唯一的关系是subobj是函数MyObj的一个属性。它没有以任何作用域的方式嵌套在其中…

但是,作为一种组织性的东西(例如,为了避免大量的全局符号),如果不意味着隐含继承,那么这样做是完全可以的。


边注:JavaScript中压倒性的约定是,像这样的构造函数使用初始封顶的CamelCasing,以区别于普通函数(使用非封顶的camelCasing)。之前你有myobjsubobj。您已经将第一个更改为MyObj,但如果遵循此约定,您也将将subobj更改为SubObj(只是FWIW)。