当前位置:首页 > 日记 > 正文

js中apply与call简单用法详解

js中apply与call简单用法详解

你可以直接看例子,也可以先读一下介绍:

call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。

call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.
从上面可以得出 call, apply 是给方法使用的,为了改变调用该方法的 this指针

简单例子:

call

function A() {  this.getName = function (xx) {    return xx;  }}function B() {}var a = new A();console.log( a.getName('i am A') ); //i am Avar b = new B() ;console.log( a.getName.call(b,'i am B') ); // i am B

B 函数中没有 任何方法 , A 函数有个 getName() 方法 ,a.getName() 自然成立 ,但 B 也要使用 getName() 的方法怎么办呢 ? 那就用 call(this,'参数') !!

可以 再理解一下这句话 -- 我们可以借助call或apply调用其它对象的方法来操作,call和apply是为了动态改变this而出现的 ,本来 a.getName() 的 this 指向 a, call 动态的 把 this 指向了 b ,变成了 b.getName()

apply

apply 与 call 只是参数的使用不同而已

function A() {  this.sun = function (a ,b) {    return a+b;  }}function B() {}var a = new A();console.log( a.sun(1,2) ); //3var b = new B() ;console.log( a.sun.call(b,2,2) ); // 4console.log( a.sun.apply(b,[3, 3]) ); //6

call和apply一般使用情况

用的比较多的,通过document.getElementsByTagName选择的dom 节点是一种类似array的array。它不能应用Array下的push,pop等方法。我们可以通过:

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));

这样domNodes就可以应用Array下的所有方法了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

excel怎么只复制数字不复制公式exc

excel怎么只复制数字不复制公式exc

数字,方法,步骤,公式,快速,  我在前几天用excel的时候意外遇到了一个问题,那就是我在复制一个有公式的数字的时候,当我粘贴出来这个数字却变成了0!下面小编教你们excel怎么只复制数字不复制公式。希望对你有帮助!excel只复制数字不复制公式…

Vue2.0如何发布项目实战

Vue2.0如何发布项目实战

项目实战,电脑软件,大家好,这节我们主要讲解项目的发布,其实很简单,没有大家想的那么复杂,具体如下操作。一、创建VUE项目首先我们需要创建VUE项目,创建项目的代码如下:# 全局安装 vue-cli$ npm install --global vue-cli# 创建一个基于 webpack …

JavaScript模块模式实例详解

JavaScript模块模式实例详解

模块,模式,详解,实例,电脑软件,本文实例讲述了JavaScript模块模式。分享给大家供大家参考,具体如下:在JS中没有Class的概念,那么如何体现Object的Public和Private属性呢,答案就是模块模式(Module Pattern)。JS中有一个显著的特性: 匿名函数(anonymo…

angular 用拦截器统一处理http请求

angular 用拦截器统一处理http请求

响应,方法,拦截器,电脑软件,angular,想使用angularjs里的htpp向后台发送请求,现在有个用户唯一识别的token想要放到headers里面去,也就是{headres:{'token':1}}index.html里引入以下js:angular.module('app.factorys',[]) .factory('ht…

JavaScript在控件上添加倒计时功能

JavaScript在控件上添加倒计时功能

控件,倒计时,代码,功能,电脑软件,一.概述在有些 报表 需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个报表…

jquery仿京东商品放大浏览页面

jquery仿京东商品放大浏览页面

浏览,商品,京东,页面,电脑软件,jquery仿京东商品页面京东页面大家都很熟悉,进入商品页面把鼠标放在图片上旁边会出现一个放大的效果,接下来就带大家看看怎么实现的!!!!仿京东商品页面css的代码!!!*{ margin: 0; padding: 0;}.da{ width: 360px; …

PPT制作墙砖字的方法怎么做

PPT制作墙砖字的方法怎么做

方法,怎么做,电脑软件,PPT,  还在为你的PPT文字平凡不起眼而烦恼吗?Duang~墙砖字震撼来袭!墙砖的字体,看起来还是非常不错滴。以下是小编为您带来的关于PPT制作墙砖字,希望对您有所帮助。PPT制作墙砖字1、在“设计”选项卡中将幻…

Photoshop调制出昏暗的霞光色铁路

Photoshop调制出昏暗的霞光色铁路

调制,霞光,弯道,昏暗,铁路,素材图片有点杂乱,同时天空部分泛白;处理的重点是把天空换上霞光;然后在合适的位置渲染一些阳光;再把图片边角区域压暗,杂乱的区域涂暗即可。原图最终效果 1、打开原图素材大图,创建可选颜色调整图层,对红、黄、绿进行调…

jquery实现放大点击切换

jquery实现放大点击切换

电脑软件,jquery,本文实例为大家分享了jquery放大点击切换图片展示的具体代码,供大家参考,具体内容如下html代码<body><div class="boss"> <div class="bigimg"> <img src="img/s1.jpg" height="350" width="350" id="spic"> …

canvas的神奇用法

canvas的神奇用法

神奇,电脑软件,canvas,canvas有一个神奇的方法getImageData这个玩意。它可以获取canvas内图像的没一个像素点的颜色值获取,而且可以改变。如果你有各种滤镜的算法。那么用canvas就可以实现图片的滤镜转化,可以做成类似美图秀秀那样的功能。使…

ppt2010主题样式库的使用方法

ppt2010主题样式库的使用方法

使用方法,样式,主题,电脑软件,今天小编给大家讲ppt2010主题样式库的使用方法,有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的。ppt2010主题样式库的使用方法1、切换到演示文稿的&ldquo;设计&rdquo;选项卡,在&ldquo;主题&rdqu…