<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Web Project</title>
<script type="text/javascript" charset="UTF-8">
/***
* call、apply
* 1.每一个函数都包含两个非继承而来的方法:call、appl
* 这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数
* 体内this对象的值。
* 2.call、apply的用途之一就是传递参数,但事实上,他们真正强大的地方能够扩充函数赖
* 以运行的作用域。
* 3.使用call(),apply()来扩充作用域的最大好处就是对象不需要与方法有任何耦合关系。
* 4.call方法简单的实现。
*
*/
//call、apply 简单的用法:绑定一个函数,用于传递参数、调用。
/*
function sum(x,y){
return x+y;
}
function call(num1,num2){
return sum.call(this,num1,num2);
}
function apply1(num1,num2){
return sum.apply(this,[num1,num2]);
}
alert(call1(10,20));
alert(apply1(20,40));
*/
//扩充作用域:优点,与对象或方法之间没有任何耦合关系。
window.color = 'red';
var obj = {color:'blue'};
function showColor(){
alert(this.color);
}
// showColor.call{window};
showColor.call(obj);
//call方法的简单模拟与实现
//function 方法
function test1(a,b){
return a+b;
}
//自定义的对象。
function Obj(x,y){
this.x=x;
this.y=y;
return x*y;
}
var obj1=new Obj(10,20);
// alert(test1.call(obj1,10,20));
// alert(test1.call(obj1,obj1.x,obj1.y));
o.method = test1;
alert(o.method(o.x,o.y));
delete o.method;
</script>
</head>
<body>
<h1>New Web Project Page</h1>
</body>
函数—06call和apply方法
最新推荐文章于 2024-05-07 14:50:37 发布