在函数中写 this.xx=function 和 var xx =function() 的区别

亲问各位一个问题 JS代码如下
function Test(){
this.add = function(){
alert(1);
}

this.modAdd = function(){
    this.add();
    add(); 
    // 以上两种均无法调用到ADD方法  
    // Uncaught TypeError: this.add is not a function
}

}
var test = new Test()
test.modAdd();

请问我如何才通过 modAdd()方法调用函数内部本身的 add 方法?

 function Test(){
this.add = function(){
alert(1);
}
var self = this;//定义一个变量指向对象this
this.modAdd = function(){
    self.add();
    // 以上两种均无法调用到ADD方法  
    // Uncaught TypeError: this.add is not a function
}
}

脚本会优先加载function xx(){}、变量方式声明则按顺序。这也是一个编码习惯问题。一船的应用中区别不大。