apply和call的用法

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>04-apply和call方法</title>
<script>

// apply和call方法
// 作用:可以设置函数的具体调用者,来修改函数的作用域
// 第一个参数:就是指的是函数的调用者
var color = ‘green‘;
var getColor = function(){
var color = ‘blue‘;
console.log(color);
console.log(this.color);
}
// getColor();
// window.getColor();
// getColor.apply(this);
// getColor.call(this);

var obj1 = {
color:‘yellow‘
};
// 相当于obj1来调用getColor
// getColor.apply(obj1);
// getColor.call(obj1);

var obj2 = {
color:‘red‘,
}
// 把getColor这个函数赋给obj2对象的属性abc
// 如果obj2中有abc属性,那么下面的语句会修改abc属性,如果obj2中没有abc属性,那么就为obj2添加一个abc属性
obj2.abc = getColor;
// 调用obj2的abc属性
// obj2.abc();

function sum (num1,num2){
return num1 + num2;
}

var result1 = sum(1,2);
// console.log(result1);
// apply方法传递调用函数的参数,需要使用数组,或者是类数组
var result2 = sum.apply(this,[1,2]);
console.log(result2);

function callSum (num3,num4){
return sum.apply(this,arguments);
}
var result3 = callSum(2,3);
console.log(result3);

// call方法传递调用函数的参数,是要一个一个的把实参传递进去
var result4 = sum.call(this,5,8);
console.log(result4);

// 总结:apply和call方法:
// 第一个参数类似,之后的参数不同。

</script>
</head>
<body>

</body>
</html>

时间: 2024-08-26 10:25:58

apply和call的用法的相关文章

关于JavaScript中apply与call的用法意义及区别(转)

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别.先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象.call([thisObj[,arg1[, arg2[,   [,.argN]]]]])参数thisObj可选项.将被用作当前对象的对象.arg1, arg2,  , argN可选项.将被传递方法参数序列.说明call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下

详解js中的apply与call的用法

前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 方法定义applyFunction.apply(obj,args)方法能接收两个参数: obj:这个对象将代替Function类里this对象 args:这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数. call call方法与apply方法的第

js中call、apply、bind的用法

今天看博客时,看到了这样的一段js代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到这样的一段代码,即使js能力再强的人,可能也需要花点时间去理解.像我这样的菜鸟就更不用说了.其实,原文已经对这端代码做出了解释,但我还是想用我的想法去解释这段代码. 上面那段代码涉及到了call.bind,所以我想先区别一下call.apply.bind的用法.这三个方法的用法非常相似,将函数绑定到上下文中,即用

每天一个JavaScript实例-apply和call的用法

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-apply和call的用法</title> <script> function Person(name,age){ //定义一个类,人类

call,apply,bind的用法以及区别

1.call.apply.bind的作用是改变函数运行时this的指向 方法调用模式: 当一个函数被保存为对象的一个方法时,如果调用表达式包含一个提取属性的动作,那么它就是被当做一个方法来调用,此时的this被绑定到这个对象. var a = 1 var obj1 = { a:2, fn:function(){ console.log(this.a) } } obj1.fn()//2 此时的this是指obj1这个对象,obj1.fn()实际上是obj1.fn.call(obj1),事实上谁调用

apply与call简单用法以及判断数组的坑

1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined.对于 Array,Null 等特殊对象使用 typeof 一律返回 object. 所以你因该 :array instanceof Array 输出为 true;当然 :array inst

JavaScript中apply与call的用法意义及区别

call和apply大概的用法差不多,简单的看下例子: <input type="text" id="myText" value="input text"> <script> function Obj(){this.value="对象!";} var value="global 变量"; function Fun1(){alert(this.value);} window.Fun1(

Js中call apply函数以及this用法

this介绍: C#里this关键字的意义比较确定的.JavaScript的this关键字,随着函数使用场合不同,this的值会发生变化,感觉用法比较混乱,所以,现在是有必要整理一下的时刻了! 总结一个原则:在js里面,this指针代表的是执行当前代码的对象的所有者. 1.和c#类似的纯粹函数调用: function test() { this.x = 1; alert(x); } test();//1 其实这里的this就是全局变量.看下面的例子就能很好的理解这里的this就是全局对象Glob

call、apply、bind的用法

数组追加 //用apply拼接 var arr1=[12,'name:foo',2048]; var arr2=['Joe','Hello']; Array.prototype.push.apply(arr1,arr2); console.log(arr1);//(5) [12, "name:foo", 2048, "Joe", "Hello"] //用call拼接 var arr1=[12,'name:foo',2048]; var arr2=

js中的apply与call的用法与区别

call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 方法定义applyFunction.apply(obj,args)方法能接收两个参数: obj:这个对象将代替Function类里this对象 args:这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数. call call方法与apply方法的第一个参