runxinzhi.com
首页
百度搜索
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
相关阅读:
fiximulator
Maven POM 模板[z]
Sentinel 实战-控制台篇[z]
Sentinel 实战-限流篇[z]
RPC 框架
如何手写实现简易的Dubbo[z]
降级、熔断、限流[z]
Transfix
Memcached和Memcache安装(64位win7)[z]
Oracle分区表例子
原文地址:https://www.cnblogs.com/tobin/p/1243514.html
最新文章
C#筛法求出范围内的所有质数
新手正式入驻博客园
C#中的委托与事件
发布项目MVC4-EF6.0出错
使用Ajax.BeginForm 中需要 上传文件 但 Request.files获取不到
Iframe跨域Session丢失的问题
Entity Framework 插入数据出现重复插入(导航属性硬是要查再一遍???????)
ES6-promise封装读取文件
css折叠效果
css布局淘宝搜索框
热门文章
promise的介绍
生成器函数实例二
css复杂选择器以及权重计算问题
浏览器以及内核
常见html css问题
生成器函数的实例
生成器函数参数
C++ 里 构建动态二维数组
生成不重复随机数,int转 TCHAR 打印输出
C#Winform将WebBowser控件替换为Chrome内核
Copyright © 2020-2023
润新知