1

我有一些代码我可能想多次重构。想象一下,像这样:

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,并可能从那里获取允许我识别对象范围的结构,但我也找不到这样做的方法。

http://esprima.org/

我想这一定是可能的,但也许我正在尝试错误的方式。我知道这也是一项艰巨的任务,所以我当然不是要求有人来解决这个问题,但是任何指向正确方向的提示都会非常有帮助。

谢谢。

4

0 回答 0