Javascript学习笔记之 apply和call方法

apply方法和call方法都可以将函数绑定到其他对象上执行,区别在于调用参数形式的不同,apply方法通过数组形式传入函数的调用参数,而call方法使用逗号分隔的参数列表。
例如,obj1.methodA.apply(obj2, ["调用methodA"]); 表示将obj1的methodA方法,绑定到对象obj2上执行。

 

示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script language="javascript">
<!--	

		function ClassA(){
				this.className= "classA";
				this.methodA = function(msg){
				document.writeln(this.className+" : "+ msg+"<br>");
			}
		}
		function ClassB(){
				this.className= "classB";
				this.methodB = function(msg){
				document.writeln(this.className+" : "+msg+"<br>");
			}
		}
	
	var obj1 = new ClassA();
	var obj2 = new ClassB();
	
	obj1.methodA("调用methodA");
	obj2.methodB("调用methodB");
	
	obj1.methodA.apply(obj2, ["调用methodA"]);
	obj2.methodB.apply(obj1, ["调用methodB"]);
	obj1.methodA.call(obj2, "调用methodA");
	obj2.methodB.call(obj1, "调用methodB");

-->
</script>
<body >
</body>
</html>

 

输出结果为:

 

classA : 调用methodA
classB : 调用methodB
classB : 调用methodA
classA : 调用methodB
classB : 调用methodA
classA : 调用methodB

你可能感兴趣的:(JavaScript,html,XHTML)