JS 模拟类的内部如何才能调用自身方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 模拟类的内部如何才能调用自身方法相关的知识,希望对你有一定的参考价值。
function Test()
Test.prototype.aa = functon(obj) .... ;
Test.prototype.bbb = function(obj)
obj.animate(
"marginLeft":+Hsize+"px",
this.speed,
function()
this.aaa(obj); /*这里要如何处理才能调用 aa 方法?? 目前这样写是错误的。*/
);
代码如下:
function Test()
Test.prototype.aa = function(obj)alert(123);;
var _this = this;
Test.prototype.bbb = function(obj)
alert("bbb");
bbbb();
function bbbb()
alert("bbbb");
_this.aa();
本回答被提问者和网友采纳 参考技术B this关键字
this代表函数执行时的当前对象。
function Test()
Test.prototype.aa = function(obj)alert(123);;
Test.prototype.bbb = function(obj)
var _this = this;
bbbb();
function bbbb()
alert("bbbb");
_this.aa();
在内部函数bbbb执行的时候,this的指向改变了,变成window对象,所以在之前用一个_this对象存起来.
Javascript在class内使用setTimeout()调用类内部函数 - js class 调用自身
效果
代码
<script>
class AAA {
delayAndShow ( edObj ) {
setTimeout(function(){
edObj.showIntroducerInfo();
}, 1000);
}
showIntroducerInfo () {
alert('delay + alert = success....');
}
};
var ob = new AAA();
ob.delayAndShow( ob );
</script>
题外话
用过以下的方法不行,包括:
//下面用四种方法测试,一个一个轮流测试。
setTimeout("this.count()",1000);//A:当下面的x.count()调用时会发生错误:对象不支持此属性或方法。
setTimeout("count()",1000);//B:错误显示:缺少对象
setTimeout(count,1000);//C:错误显示:'count'未定义
//下面是第四种
var self=this;
setTimeout(function(){self.count();},1000);//D:正确 ----- 我这里还是不行,奇怪
以上是关于JS 模拟类的内部如何才能调用自身方法的主要内容,如果未能解决你的问题,请参考以下文章
Javascript在class内使用setTimeout()调用类内部函数 - js class 调用自身