javascript call和apply

用途:

每个函数都包含两个非继承而来的方法:call和apply.它们的用途都是在特定作用域当中调用函数,实际上等于设置了函数体内this的值。

语句块:fn.call(obj,arg1,arg2,arg3...)              fn.apply(obj,[arry]/arguments)

call和apply最强大的地方是能够扩充函数赖以运行的作用域,实际场景如下:

var name = "复读机",
    age = 25;
function say(){
    console.log("name : " + this.name);
    console.log("age : " + this.age);
}
var obj = {
    name : "bb机",
    age : 30
}
say(); //name : 复读机 age : 25
say.call(obj);//name : bb机 age : 30 

如果我们不使用call方法,我们是怎么用obj调用say这个函数的呢

var name = "复读机",
    age = 25;
function say(){
    console.log("name : " + this.name);
    console.log("age : " + this.age);
}
var obj = {
    name : "bb机",
    age : 30
}
say(); //name : 复读机 age : 25
obj.say = say;
obj.say();//name : bb机 age : 30

可以看出用call将会更方便!

时间: 2024-10-22 06:25:39

javascript call和apply的相关文章

javascript call()和apply()

ECMAScript给Function原型定义了两个方法,一个是call()和apply().使用这两个方法可以想其他对象方法一样调用函数.把对象当成数据一样的参数传递给函数,参数去调用函数. 他两的区别是:call的第一个参数必须是对象(或者函数),其余的参数可以任意.而apply的一般只有两个参数,第一个必须是对象或者函数,第二个是一个带下标的集合. 例如: function dow(s){ document.write("<h1>"+s+"</h1&g

Javascript使用函数apply扩展环境对象

Javascript使用函数apply扩展环境对象 通过实例对象作为参数传入调用构造函数对象的apply方法,以使实例对象作为环境对象在作为一个普通函数的构造函数中执行,构造函数的属性会覆盖到实例对象上,从而实现实例对象的属性扩展. 1.函数对象的apply和call传入参数     var tag = "global";      function say(){          for(var args = "", i = 0; i < arguments

JavaScript中的apply()方法和call()方法使用介绍

javascript中apply和call方法的作用及区别说明 call和apply的说明 call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同. 语法:foo.call(this, arg1,arg

javascript中call,apply,bind的用法对比分析

这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们. 关于call,apply,bind这三个函数的用法,是学习javascript这门语言无法越过的知识点.下边我就来好好总结一下它们三者各自的用法,及常见的应用场景. 首先看call这个函数,可以理解成"借用“,"请求".想像一下如下的情景:你孤单一人漂泊在外,有急事想往家里打电话,可是很不巧,手机欠费了,或者没电了,或者掉坑里了,总之你的手机就是用

JavaScript 之 call apply bind

关键字 this 绑定的方法 this的动态切换,固然为JavaScript创造了巨大的灵活性,但也使得编程变得困难和模糊.有时,需要把this固定下来,避免出现意想不到的情况.JavaScript提供了call.apply.bind这三个方法,来切换/固定this的指向. 1. apply(thisArg[,args]) call(thisArgs [,args...]) 后面跟的是若干个参数列表 而 apply接收的是参数数组. thisArgs指定了函数在运行期的调用者,也就是函数中的th

JavaScript基础插曲---apply,call和URL编码等方法

Js基础学习 Js的压缩: 就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩. Apply和call的使用 1:apply方法:应用某一对象的方法,用于一个对象替换当前对象.主要是改变this的值. <script type="text/javascript"> ????var user_name = "阿辉"; ????//一个函数,这里主要注意里面的this的含义. ????function showName() { ????????ale

JavaScript call和apply的用法

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <div i

Javascript中的apply与call详解

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 一.方法定义 1.call 方法 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项.将被用作当前对象的对象. arg1, arg2, , argN 可选项.将被传递方法参数序列. 说明  call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.  如果

了解javascript中的apply和call

apply和call是javascript中很重要的方法,虽然平时编程很少接触到,但是JS框架中到处在使用这2个方法. 这2个方法是在Function.prototype中,也就是说每个JS函数都有这2个方法. alert(Function.prototype.hasOwnProperty("apply"));//true alert(Object.prototype.hasOwnProperty("apply"));//false 这2个函数完成的功能是等价的,唯

JavaScript call 和apply 的理解

这两个方法对于一些新手而言难耐弄清他们到底是怎么回事,对我我来讲我对call和apply的方法理解的也比较含糊.今天闲来无事准备彻底搞call和apply到底是怎么回事.本着互联网分享精神.我将我自己的理解分享给大家. 前言 以下是我在网上找到的资料. JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法. 它们各自的定义: apply:应用某一对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B