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>
--------------------------
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>
相关文章推荐
- Javascript:apply()和call()方法深入理解
- 【JavaScript 学习--09】--理解Js 中的apply 和 call方法
- 深入理解关于javascript中apply()和call()方法的区别
- JavaScript之call(),apply(),bind()三个方法理解
- javascript 中 方法call()的理解
- javascript--对call方法的理解
- 深入理解关于javascript中apply()和call()方法的区别
- 深入理解JavaScript中的call、apply、bind方法的区别
- 深入理解JavaScript中的call、apply、bind方法的区别
- JavaScript 中的 call() 和 apply() 方法深入理解
- 深入理解关于javascript中apply()和call()方法的区别
- javascript中apply()和call()方法的区别
- [置顶] JavaScript中call,apply,bind方法的总结
- javascript中call和apply方法
- JavaScript中call,apply,bind方法的总结
- 深入理解Javascript动态方法调用与参数修改的问题
- 关于javascript中apply()和call()方法的区别
- javascript笔记—— call 简单理解
- js中toStirng()与Object.prototype.toString.call()方法理解
- javascript中的call()方法和apply()方法用法总结