2014-01-09 40 views
0

我有一个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 
}; 
+2

将它们按前缀分组,或者通过在源代码中将它们分开,但不通过嵌套属性进行分组。 – Bergi

+0

函数类将有大约50个方法,用于“文件夹”,“文件”,“属性”等,我正在寻找一种方法来组合函数 – Catalin

回答

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();