首页 新闻 搜索 专区 学院

javascript方法参数的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-01-26 12:30

<html>
<head>
<title>函数的自定义属性</title>
<script type="text/javascript" language="javascript">
function mySquare(x)
{
//将函数的counter属性值加1并返回
mySquare.counter++;
return x*x;
}
//初始化函数的counter属性值
mySquare.counter = 0;

for (i=1;i<4;i++)
{
document.write(i,"的平方为:",mySquare(i),"<br>");
}

document.write("mySquare()函数执行了:",mySquare.counter,"次<br>");
</script>
</head>
<body>
</body>
</html>

 

上面的红字部分为什么用this关键字代替了.结果就不同???

iia的主页 iia | 初学一级 | 园豆:6
提问于:2012-01-22 09:09
< >
分享
最佳答案
0

这是设计到函数的执行作用域问题。

function mySquare(x)
{
//将函数的counter属性值加1并返回
mySquare.counter++;
return x*x;
}

这个函数的执行作用域是window,你把mySquare.counter++;改成this.counter++;这里的this就是window

而由于你的counter是属于函数对象mySquare,这是两个不同的作用域啊。个人觉得,你声明属性,最好是

var mySquare=function mySquare(x)
{
//将函数的counter属性值加1并返回
mySquare.counter++;
return x*x;
}

mySquare.prototype.counter=0;

收获园豆:10
ljcheibao | 初学一级 |园豆:132 | 2012-01-24 09:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册