正确样例:
var Person=function(name,age){
this.Name='';
this.Age='';
this.Say=function(msg){
alert(msg);
}
this.init=function(name,age){
this.Name=name;
this.Age=age;
}
this.init(name,age);
var fun=function(){
alert('fun');
}
this.funShow=function(){
fun();
}
<pre name="code" class="html"> var mutilFun=function(){
<pre name="code" class="html"> Say();
<span style="font-family: Arial, Helvetica, sans-serif;"> this.Say();</span>
}
this.mutilFunShow=function(){ <pre name="code" class="html"> mutilFun();
}
fun();}调用: var Jon=new Person('Jon',26); Jon.Say('go away'); alert(Jon.Name+Jon.Age);上面都对 var Shaw=new Person('Shaw',26);
Shaw.fun();
<pre name="code" class="html"> Shaw.funShow();//这个是对的。其他Shaw都错。
Shaw.mutilFunShow();//这里面是能够运行到mutilFun这个涵数,但是<span style="font-family: Arial, Helvetica, sans-serif;">mutilFun这个涵数报错,因为mutilFun中的this.Say()不是Person这个类中的this.Say()。这里的this指 的就是</span><span style="font-family: Arial, Helvetica, sans-serif;">mutilFun,不是Person。</span>
Shaw这个对象是错了
为什么 Shaw.fun()会错,而且报的错误是 Shaw.fun() is not a function。因为fun不是Shaw的属性,如果是属性是不用var ;而用this或没有this.
但是 Shaw.funShow()就是对的。
Person即是类,也是方法,说成带属性的方法更加合适。Person里面也是一步步执行下拉的,先运行this.init(name,age),在运行fun()。