函数可以被作为对象的属性,那么这个对象就是这个函数的所有者。
“this”总是引用函数的所有者,请看下面的例子:
<html>
<head>
<title>Example-6.9 为函数指定所有者</title>
</head>
<body>
<script>
<!--
function dwn(s)
{
document.write(s + "<br/>");
}
//定义一个Point类型
function Point(x,y)
{
this.a = x;
this.b = y;
}
//定义一个Vector类型
function Vector(x,y)
{
this.x = x;
this.y = y;
}
function f(){
dwn(this.constructor);
}
var p = new Point(1, 2);
var v = new Vector(-1, 2);
p.a=f; //给P实例定义一个a属性,然后f()当作p的a方法来用,那么p是函数a的所有者。
p.a(); //调用a方法,f中的this指向p,因此this.constructor得到p的构造函数Point
v.a=f; //把f()当作v的方法来用
v.a(); //调用时,f中的this指向v,因此this.constructor得到v的构造函数Vector
-->
</script>
</body>
</html>