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

解析模块的数据传不到逻辑模块

解析模块的数据传不到逻辑模块

侃侃尔雅 2019-05-23 17:27:12
SampleTime.prototype.getSampleStateBySampleNo是数据解析模块;SampleTime是JS交互逻辑模块;SampleTime.prototype._setSampleNo是关联模块;关联模块传输数据到解析模块是正常的,但是传输到交互模块就没数据了,本来调用存储过程是正常的,代码量有些大,不便之处多多海涵,同事说this的指向有问题,但不知道怎么修改所有代码://JScript文件functionSampleTime(){vartimes=this._rowsData;console.log(times);//计算宽度,总和:vartotals=0;for(vartotal=0;total
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

functionSampleTime(){
vartimes=this._rowsData;
...
this._valueDatas.forEach(
...
}
//調用標本信息
SampleTime.prototype._setSampleNo=function(nSampleNo){
//清除表数据
this._tableLogInfo=null;
//alert(nSampleNo);
SampleTime.prototype.getSampleStateBySampleNo(nSampleNo);//A
SampleTime();//B
}
//交互模塊,柱状图横向纵向时间轴
//定义初始值的吧
SampleTime.prototype.getSampleStateBySampleNo=function(p){
...
this.rowsData=[];
this._rowsData=[];
this._rowsData=
...
}
SampleTime.prototype.getSampleStateBySampleNo(1);//C
1.为什么要用prototype来定义方法,直接函数不好么?2.既然要用prototype来访定义方法,那就好好使用JS面向对象的方法
问题出在:C处代码调用时的this为SampleTime函数对象的prototype属性对象A处代码调用时的this为SampleTime函数对象的prototype属性对象B处代码调用时的this为全局对象
那么也即是所你在C、A处设置的参数,对B处的函数体代码来说完全没有用
看下下面代码,你就会明白:
functionTEST(){
this._p="TEST";
console.log("this_p1:"+this._p1);
console.log("this_p2:"+this._p2);
}
TEST.prototype.fun1=function(){
this._p="fun1";
}
TEST.prototype._run_=function(){
TEST.prototype.fun1();
TEST();
}
TEST.prototype.fun1=function(){
this._p1="fun1";
}
TEST.prototype.fun2=function(){
this._p2="fun2";
}
TEST.prototype.fun2();
TEST.prototype._run_();
//this_p1:undefined
//this_p2:undefined
console.log(TEST.prototype._p1);//fun1
console.log(TEST.prototype._p2);//fun2
console.log(this._p);//TEST
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 497 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信