正确样例:
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()。
时间: 2024-10-25 07:53:01