js中this关键字的解释:
<scripttype="text/javascript">varF=function(){returnF.fn.init();};F.fn=F.prototype={i...
<script type="text/javascript">
var F= function(){
return F.fn.init();
};
F.fn = F.prototype = {
init: function(){
this.length = 0;
this.test = function(){
return this.length;
}
return this;
},
f: "1.3.2",
length: 1,
size: function(){
return this.length;
}
};
alert(F().f); // 返回 "1.3.2"
alert(F().test()); // 返回 0
alert(F().size()); // 返回 0
</script>
个人理解:
init中return this 返回的是F.fn对象,所以第一个alert(F().f); 结果是1.3.2;
但是第二个和第三个alert();不能理解;
请前辈们赐教啊!! 展开
var F= function(){
return F.fn.init();
};
F.fn = F.prototype = {
init: function(){
this.length = 0;
this.test = function(){
return this.length;
}
return this;
},
f: "1.3.2",
length: 1,
size: function(){
return this.length;
}
};
alert(F().f); // 返回 "1.3.2"
alert(F().test()); // 返回 0
alert(F().size()); // 返回 0
</script>
个人理解:
init中return this 返回的是F.fn对象,所以第一个alert(F().f); 结果是1.3.2;
但是第二个和第三个alert();不能理解;
请前辈们赐教啊!! 展开
1个回答
展开全部
简单来说你看到的this就是指对象,比如我一个函数式这样的
obj.onclick=function()
{
alert(this.innerHTML)
}
this就是指obj,
在你的函数里面刚刚定义了this.length=0;所以第二个this指向是this
第三个函数你根本没有定义size的length,所以也是0
obj.onclick=function()
{
alert(this.innerHTML)
}
this就是指obj,
在你的函数里面刚刚定义了this.length=0;所以第二个this指向是this
第三个函数你根本没有定义size的length,所以也是0
追问
alert(F().test());
这个不是应该返回1吗,可实际是返回的0啊,为什么
追答
init: function(){
this.length = 0;
this.test = function(){
return this.length;
}
看这个函数,this指向的是init,init的length=0,init的test方法返回的是init的length;你说返回应该是几啊?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询