call和apply方法

普通函数中是否也有this关键字,this指向谁呢?

<script type="text/javascript">
     function myfun(){
        console.log(this);
     }
     myfun();
</script>

控制函数内部的this指向:

函数都可以打点调用call()和apply()方法,可以帮我们制定函数内部的this指向,在函数调用过程使用这两个方法。

var oDiv = document.getElementsByTagName(‘div‘);
function fun(){
   console.log(this);
}
//fun.call(oDiv);
fun.apply(oDiv);

作用:

1、执行fun函数

2、在fun函数内部指定this的指向oDiv

<!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" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style type="text/css">
div{
width: 200px;
height: 200px;
background: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
<script type="text/javascript">
/*function fun(){
console.log(this);
}
fun();*/
var oDiv = document.getElementsByTagName(‘div‘)[0];
/* function fun(){
console.log(this);
}
//fun.call(oDiv);
fun.apply(oDiv);*/

/*function sum(a,b){
this.style.backgroundColor = "pink";
}
sum.call(oDiv);
sum.apply(oDiv);*/

function sum(a,b){
this.style.backgroundColor = "pink";
console.log(a+b);
}
sum.call(oDiv,2,3);
sum.apply(oDiv,[3,5]);
</script>

call和apply 区别:

函数传递参数的语法不同。

sum.call(oDiv,参数1,参数2,参数3...);
sum.apply(oDiv,[参数1,参数2,参数3...])
时间: 2024-08-04 13:40:11

call和apply方法的相关文章

Scala 中apply方法的用法

Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性.关于协议在Python中是挺多的,看看Python的对象协议,有很多很多,如果对Python的对象协议了解(不了解的可以点击此处)的比较深刻的话,其实scala的apply方法也是很好理解的,比如说 Scala 为配合 DSL 在方法调用时有这么一条约定: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 "0 to 2",实际完整调用是 "0.

call 方法和 apply方法

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])

.call方法和.apply方法

.call 在方法后面加上.call.例: [].push.call(arr,"1","p") .call实现了.push方法的this指向([]-->arr),就相当于push方法作用与arr上了,后面的参数不变 .apply 在方法的后面加入.apply.例: [].push.apply(arr,["p","1"]) .apply方法实现了.push方法的this指向,使之作用于第一个参数arr上,把原先的参数用数组

Js apply 方法 具体解释

Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了,在这里我做例如以下笔记,希望和大家分享..  如有什么不正确的或者说法不明白的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的差别在哪里 2.        什么情况下用apply,什么情况下用call 3.        ap

js中apply方法的使用

1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: 1 Object.extend = function(destination, source) { 2 for (property in source) { 3 destination[property] = source[property]; 4 } 5 return destination; 6 } 除此之外,还有种方法,就是:Function.apply(当然使用Function.call

js中的call()方法与apply()方法

摘自:http://blog.csdn.net/chelen_jak/article/details/21021101 在web前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用call方法 一.call方法的定义 关于call的定义都很拗口.在我的理解,a.call(b,arg1,arg2..)就是a对象的方法应用到b对象上.例如如下例子: function add(a,b) { alert(a+b); } function reduce(a,b) { alert(a-b);

JS中的call()和apply()方法

转载自:http://uule.iteye.com/blog/1158829 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj.

apply方法别有他用!

首先是apply()一个很强大的功能——能将一个数组默认转化为参数列表!!! 应用: 1.求出一个数组中的最大值 var arr= [1, 3, 3, 6]; var max =Math.max.apply(null,arr); alert(max); // 6 Math.max()方法接受多个参数,但是不接受数组,所以直接Math.max(arr)是无法达到效果的,由apply()将数组转化成参数列表进行操作. 2.合并数组 ①使用concat()方法 var arr1 = [1, 3, 3,

[转]angular之$apply()方法

这几天,根据buddy指定的任务,要分享一点angular JS的东西.对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不过我相信,只要下功夫,即使是反人类的设计也不是什么大的问题.     Okay,废话不多说.为了弄明白angular JS为何物,我先是从Scope开始.那么什么是Scope呢?借用官方文档的一段话: “scope is an object that refers to the applicatio

深入学习JavaScript: apply 方法 详解(转)——非常好

摘自:http://blog.csdn.net/qianzai5765638/article/details/6952321 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享..  如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的区别在哪里 2