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
查看全文
相关阅读:
利用ssh的私钥登录Linux server
PSR-2 代码风格规范
MySQL的四种事务隔离级别
table添加横向滚动条
转换图片大小
百度地图Label 样式:label.setStyle
鼠标的几种常用样式
百度地图API-自定义图标覆盖物
微信公众号自定义菜单中可加入的表情
微信公众号项目总结
原文地址:https://www.cnblogs.com/tobin/p/1243514.html
最新文章
android studio 更改快捷键为eclipse中习惯的方式
Android 属性动画(二)
Android 属性动画(一)
Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器
解决Android单个dex文件不能超过65536个方法问题
Java开发者易犯错误Top10
ViewPager切换动画PageTransformer使用
Android开发编码规范(自用)
[JAVA设计模式]第四部分:行为模式
[JAVA设计模式]第三部分:结构模式
热门文章
HL7消息部分笔记
HL7体系入门级介绍【转】
Android:onNewIntent()触发机制及注意事项
Android设备一对多录屏直播--(UDP组播连接,Tcp传输)
升级wampserver3.0的PHP版本到7.1
git merge 和 git rebase 小结
Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能
centos7安装部署gitlab服务器
【常用随笔2018】
Mac 升级 OpenSSL
Copyright © 2011-2022 走看看