我有一些代码我可能想多次重构。想象一下,像这样:
Namespace.CustomObject = function(name,type){
this.name = name;
this.type = type;
};
Namespace.CustomObject.prototype = {
writeName: function(){
console.log(this.name);
},
changeType: function(type){
this.type = type;
}
};
var object1 = new Namespace.CustomObject('object1','spoon');
object1.name = 'new name';
object1.changeType('new type');
所以,我想要一个系统来生成某种数据结构,我可以在其中知道我有哪些命名空间/对象以及它们的方法,所以我可以决定是否要将“changeType”函数名称更改为“setNewType ",我知道仅仅替换原型的“changeType”属性是不够的,还需要 object1 调用该函数,因为它是一个 CustomObject。
所以,我一直在尝试不同的选择。
起初我尝试掌握:
http://graspjs.com/docs/equery/
但是我找不到检测元素范围的方法,我认为这是不可能的。
然后我想到使用 esprima 来创建我的代码的 AST,并可能从那里获取允许我识别对象范围的结构,但我也找不到这样做的方法。
我想这一定是可能的,但也许我正在尝试错误的方式。我知道这也是一项艰巨的任务,所以我当然不是要求有人来解决这个问题,但是任何指向正确方向的提示都会非常有帮助。
谢谢。