慕数据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();
好像是因为你上面的那个【var n="李四";】的位置的问题,那个位置的【n】应该是个局部变量,离开了它所在的函数之后就被清除了。就不存在了。
然后导致下面的【alert("t-hello"+_this._name+n);】中【+n】出错。从而导致【t-hello不显示】。
解决方法是,把【var n="李四";】这条语句,移到两个函数的外面去,改成全局变量。
比如移到【var t=teacher("张三"); //传递参数】的上面。
JavaScript进阶篇
468191 学习 · 21891 问题
相似问题