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

来源:7-23 编程练习

慕数据9493197

2016-10-03 21:23

(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回答

  • S01010011
    2016-10-04 01:28:15
    已采纳

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

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

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

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题