构造函数中的this与jq中的this冲突解决方法
程序员文章站
2022-04-12 08:10:30
通常我们写构造函数都是这样写// 文件构造函数 业务类function File(json,popupWindowShow,recordFilePath){//这里的this是指向构造函数本身 this._json = json; //客户端传入的数据 this.popupWindowShow = popupWindowShow; this.recordFilePath = recordFilePath;}// 获取用户设置信息File.prototype.getUser...
通常我们写构造函数都是这样写
// 文件构造函数 业务类
function File(json,popupWindowShow,recordFilePath){
//这里的this是指向构造函数本身
this._json = json; //客户端传入的数据
this.popupWindowShow = popupWindowShow;
this.recordFilePath = recordFilePath;
}
// 获取用户设置信息
File.prototype.getUser = function(){
fileAdress = JSON.parse(this._json.data).LocalFilesPath //将获取到的地址赋值到全局变量
}
// 新建文件
File.prototype.fileCreate = function(){
// alert("weige")
}
// 获取本地数据
File.prototype.getLocalFile = function(){
var localFileList = JSON.parse(this._json.data).LocalFiles;
baseLocalFile = localFileList; //用来排序的本地文件数据
var onlineFileList = JSON.parse(this._json.data).DownloadFiles;
baseDownFile = onlineFileList; //用来排序的云下载文件数据
if(getLocalFileFlag==1){ //为1则渲染数据
// 样式一数据填充
$(".file_list_first_local").append(commonFunc.dealFileListOne(localFileList));
$(".file_list_first_online").append(commonFunc.dealFileListOne(onlineFileList));
// 样式二数据填充
$(".file_list_second_local").append(commonFunc.dealFileListTwo(localFileList));
$(".file_list_second_online").append(commonFunc.dealFileListTwo(onlineFileList));
}
}
这样是不会冲突的,但是下面这种情况就存在冲突的问题
// 重命名
File.prototype.fileRename = function(){
// 重命名成功
if(this._json.data=="false"){
commonFunc.errorToast(this._json.des)
}else{
$(".file_list_wrap ul li").each(function(){
if($(this).attr("data-path")==this.recordFilePath){
$(this).find(".file_name").text(JSON.parse(this._json.data).value);
$(this).attr("data-path",JSON.parse(this._json.data).path);
// 成功关闭弹窗
$(".file_container_box .maskClose").click();
commonFunc.successToast("重命名成功")
wc_call(JSON.stringify(mainJson.getLocalFile)); //重新更新数据
}
})
}
}
// 文件删除
File.prototype.fileDelete = function(){
if(this._json.data=="false"){
commonFunc.errorToast(this._json.des)
}else{
$(".file_list_wrap ul li").each(function(){
if($(this).attr("data-path")==this.recordFilePath){
$(this).remove();
// 成功关闭弹窗
$(".file_container_box .maskClose").click();
commonFunc.successToast("删除成功")
wc_call(JSON.stringify(mainJson.getLocalFile));//重新更新数据
}
})
}
}
这个时候我们就需要另外创建一个变量来接收构造函数的this,避免与jq中的this冲突
// 文件构造函数 业务类
var that; //接收构造函数中的this
function File(json,popupWindowShow,recordFilePath){
this._json = json; //客户端传入的数据
this.popupWindowShow = popupWindowShow;
this.recordFilePath = recordFilePath;
}
然后把原型链上的方法中的this改为that就可以了
本文地址:https://blog.csdn.net/qq_35168861/article/details/109381556
上一篇: 为什么神话传说中的仙凡之恋都是仙女下凡?原因是什么?
下一篇: 一个奇奇怪怪的AD问题与解决方法