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
查看全文
相关阅读:
JS小白进阶之路(2)
JS小白进阶之路(1)
ajax.readyState与ajax.status一览
Photoshop投影和CSS box-shadow转换
layer弹层插件
[Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted
css清除浮动影响
css网页重置样式表(多版本)
XSS攻击和CSRF攻击的定义及区别
git的cd命令
原文地址:https://www.cnblogs.com/tobin/p/1243514.html
最新文章
JS找到0 ~ 100 之间的所有偶数,并求和
JS输入月份,显示当月的天数 利用case落空简化代码.
块元素、行内元素、行内块元素 小结,不足之处请谅解
九宫格拖拽与互换
TypeScript入门篇——基础知识(快速了解js与ts差异)
vue cli3中的各项配置解析 简洁明了 一看就会 一干就ok
js防抖和节流 区别及实现方式
如何垂直居中一个<img>
数组去重的一些方法和思路 总有一个你会的!!! 不全之处敬请见谅
table 表格小总结 不足勿怪
热门文章
nodejs和npm的关系 一点通
瀑布流 无限加载。步骤详细。耐看
重力回弹 好玩的小随笔
Nodejs学习笔记(1)
jQuery基础入门(二)
jQuery基础入门(一)
JavaScript防抖和节流
2019前端面试题整理(经典20题)
Gulp介绍及安装使用教程
js中数组去重的方法
Copyright © 2011-2022 走看看