构造函数中的this与jq中的this冲突解决方法
程序员文章站
2024-01-06 16:05:28
通常我们写构造函数都是这样写// 文件构造函数 业务类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
上一篇: oracle 11g表智能按月分区
下一篇: 为什么递归不起作用? 郁闷了
推荐阅读
-
Oracle 10g与11g中的一个函数wmsys.wm_concat 的不同返回值
-
JS中处理与当前时间间隔的函数代码_时间日期
-
PHP中file_exists函数不支持中文名的解决方法
-
对python中的iter()函数与next()函数详解
-
边学边思考数据库中函数依赖与多值依赖的辨析
-
FFmpeg error LNK2019:无法解析的外部符号avcodec_register_all(),该符号在函数中XXX被引用的解决方法
-
在PHP中实现重载构造函数的方法
-
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
-
php中mail函数发送邮件失败的解决方法
-
解析WordPress中的post_class与get_post_class函数