将包装器对象添加到原型对象

时间:2014-01-09 07:16:20

标签: javascript

我有一个用作构造函数的javascript函数。

所有使用的函数都会添加到函数的prototype对象中。

然而,因为有这么多,我很好奇我是否可以将它们“分组”成一些包装对象。如果我这样做,构造函数的this实例就会丢失。

function FilesManager() {
    this._init();
};
FilesManager.prototype._init = function () { };

// wrapper object for folders functions
FilesManager.prototype.folders = {};
FilesManager.prototype.folders._dropFiles = function () {
    var self = this;
    // self is an instance of folders {} object, and not an instance of FilesManager
};

1 个答案:

答案 0 :(得分:0)

您可以重新使用文件夹的原型,但必须创建文件夹的实例以获得使用它的FileManager实例的引用。代码看起来像这样:

function Folders(fileManager){
  this.fm=fileManager;
}
Folders.prototype._dropFiles=function(){
  //test to see if we get the correct name
  console.log("logging name:",this.fm.name);
}
function FilesManager(args) {
  if(typeof args==="undefined"){
    args={};
  }
  this.name=args.name?args.name:"default name";
  this.folders=new Folders(this);
};

var fm1=new FilesManager({name:"fm1"});
var defaultNamedfm = new FilesManager();
fm1.folders._dropFiles();
defaultNamedfm.folders._dropFiles();