<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关键字代替了.结果就不同???
这是设计到函数的执行作用域问题。
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;