为了账号安全,请及时绑定邮箱和手机立即绑定

大神们可以帮我看看为什么t-hello 不能显示吗 谢谢

(function () {
   var n="李四";  //新变量

   function person(name) {    //传递参数
       var _this={};
       _this._name=name;     //传递参数
       _this.say=function () {
           alert("p-hello"+_this._name+n);//传递参数  //加入新变量

       };
       return _this;
   }
   window.person=person;
}());


(function () {
   function teacher(name) {
       var _this=person(name);
       var superHello=_this.say;
       _this.say=function () {
           superHello.call(_this);
           alert("t-hello"+_this._name+n);

       };
       return _this;
   }
   window.teacher=teacher;

}());

var t=teacher("张三");   //传递参数
t.say();

正在回答

1 回答

    好像是因为你上面的那个【var n="李四";】的位置的问题,那个位置的【n】应该是个局部变量,离开了它所在的函数之后就被清除了。就不存在了。

    然后导致下面的【alert("t-hello"+_this._name+n);】中【+n】出错。从而导致【t-hello不显示】。

    解决方法是,把【var n="李四";】这条语句,移到两个函数的外面去,改成全局变量。

    比如移到【var t=teacher("张三");   //传递参数】的上面。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大神们可以帮我看看为什么t-hello 不能显示吗 谢谢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信