zoukankan
html css js c++ java
javascript改变this指针
今天写代码时遇到一个问题,this指针的问题,先把代码贴上
<
script
type
="text/javascript"
>
window.onload
=
function
()
{
var
m
=
new
main(
'
aaaa
'
);
m.run();
}
var
main
=
function
(param)
{
this
.param
=
param;
this
.run
=
function
()
{
setTimeout(
this
.Change,
3000
);
}
this
.Change
=
function
()
{
alert(
this
.param);
}
}
</
script
>
这个代码看起来很清晰,但是会报错,原因我想大概就是在隔了三秒执行Change方法时找不到this.param,this.Change的this就指向了window,不是实例m了,整了半天没有整明白,没办法只好上网求助,结果有高手给除了解决方法,修改this指针。再来看新代码:
<
script
type
="text/javascript"
>
window.onload
=
function
()
{
var
m
=
new
main(
'
aaaa
'
);
m.run();
}
var
main
=
function
(param)
{
this
.param
=
param;
this
.run
=
function
()
{
var
self
=
this
;
setTimeout(self.Change.setThis(self),
3000
);
}
this
.Change
=
function
()
{
alert(
this
.param);
}
Function.prototype.setThis
=
function
(object)
{
var
__method
=
this
;
return
function
()
{
__method.apply(object, arguments);
}
;
}
;
}
</
script
>
其中添加了一段修改指正的代码,修改指针代码:
Function.prototype.setThis = function(object)
{
var __method = this;
return function()
{
__method.apply(object, arguments);
} ;
};
使用的时候要定义一个变量self=this; 用self来调用。最主要的是不理解apply到底是做啥子用的,只能先记下来,以后慢慢理解!
第八宗罪
Tobin
查看全文
相关阅读:
扫雷游戏
堆
set
map
认识了个外国友人!
插入排序算法
复习 C语言
有关于我的一点想法
linux下的内存分布
C语言-将输入的字符输出并将多个空格按照一个空格的方式输出
原文地址:https://www.cnblogs.com/tobin/p/1243514.html
最新文章
【LeetCode】129. Sum Root to Leaf Numbers
【LeetCode】113. Path Sum II
【LeetCode】112. Path Sum
oracle实用sql
python面试题
django admin中的五大配置参数
python数据类型相互转换
python直接赋值、浅拷贝和深度拷贝解析
python 可变类型与不可变类型
python数据类型
热门文章
django配置media静态资源文件管理
js实现上传文件动态展示在前端并通过ajax上传到后端
线程的优缺点
全部算法
数数字
动态规划
前缀和——分割队伍
混合牛奶
排球比赛
计蒜客 验证字串
Copyright © 2011-2022 走看看