我有一个用作构造函数的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
};
答案 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();