您的位置:首页 > Web前端 > JavaScript

javascript call方法的理解。

2010-03-18 16:45 281 查看
JS手册中对call的解释:

--------------------------

call 方法

调用一个对象的一个方法,以另一个对象替换当前对象。

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

参数

thisObj

可选项。将被用作当前对象的对象。

arg1, arg2, , argN

可选项。将被传递方法参数序列。

说明

call 方法可以用来代替另一个对象调用一个方法。

call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

-------------------------------------------

以下是例子。注释都是自己对call的理解。

<input type="text" id="myText" value="input text">

<script>

//类

function Obj(){ this.value="对象!"; }

var value="global 变量";

//方法。作用就是使出全局变量value

function fun1(){ alert(this.value); }

window.fun1();

//alert:global 变量

//当前窗口对象调用fun1,fun1方法中的this指向的是window。

//window的value就是全局变量value。所以输出的是“global 变量”

fun1.call(window);

//alert:global 变量

//fun1.call(window); call中传入的对象参数还是window。和调用他的对象一样。所以输出的还是“global 变量”。

var txt=document.getElementById('myText');

fun1.call(txt);

//alert:input text

//call中传入的是text对象。

//fun1.call(txt);也等于 window.fun1.call(txt); 通过call 来改变调用fun1方法的对象。

//也就是说,方法体内的this由原来指向的window改变为指向的是txt对象,

//也可以被认为fun1成了对象txt的一个方法。或者说给txt增加了一个fun1的方法。方法内执行的是输入txt的value。alert出来的也就是txt的value

//

// txt.printTxt=function(){

// alert(this.value)

// }

// txt.printTxt();

fun1.call(new Obj());

//alert:对象!

//测试fun1的this指向的是类Obj的一个实例对象。alert出的Obj的属性value值。

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: