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
查看全文
相关阅读:
15个新鲜出炉的 Photoshop 文本效果教程
10个美丽的例子,插图在网页设计中的应用
分享8个非常时髦的翻页特效(附代码片段)
【Vue课堂】Vue.js 父子组件之间通信的十种方式
Tippy.js – 轻量的 Javascript Tooltip 工具库
12个美丽的网站与受到日出启发的配色方案
精选:3个可以下载免费的高质量照片的网站
nativefier
Mark Text
Puppeteer
原文地址:https://www.cnblogs.com/tobin/p/1243514.html
最新文章
画多个图
饼状图
直方图
堆叠条形图
[Git]checkout 指定版本
Git恢复之前版本的两种方法reset、revert(图文详解)
at_today git--一文弄懂git的工作区、索引区、本地仓库、远程仓库以及add、commit、push三个操作
boost之ThreadPool
SOAP协议和基于SOAP的开发流程详述
linux中export与source的作用
热门文章
如何让bat文件已管理员身份运行
一图看懂音视频核心技术栈(框架、工具和场景)
Windows下后台服务程序启动前台可交互界面程序
c++11中的线程、锁和条件变量
基于 ASP.NET Core Policy-based authorization 实现博文访问授权
15个可以带给你启发的 SVG 动画示例
可能是你见过的最完善的微前端解决方案
最新前沿:2019 年大前端技术趋势分析
【精彩回顾】第二届微医前端技术沙龙(附PPT下载)
2018年度 35 个最好用 Vue 开源库
Copyright © 2011-2022 走看看