js的call() ,apply() 两种方法的区别和用法,最白话文的解释,让枯燥滚粗!

小说:唯品会代下单如何挣钱作者:纯秉乙更新时间:2019-03-19字数:38457

正在这时,朱竹清的身体突然消失了,海魔女的大尾抽在了空气之中,带起一连串扭曲的波纹。她清澈的眼眸中流露出几分怔忪之色,显然不明白为什么会变成这样。朱竹清的想法她通过读心术感觉到的很清楚,可眼前发生的一切却似乎发生了变化。

问道100以上队伍号

尽管他觉得《浮夸》作词上,略有瑕疵,比如平仄不太搭,韵脚也有些问题,可就歌词内容而言,还是非常不错的。
“不行,这样下去我迟早完蛋,这样的怪力,一拳就足以让我重伤,两拳就可以去找猿飞了,没想到我学会这一招之后居然要对自己昔日的战友使用。”自来也心里先是失落的叹了一口气,旋即眼中闪过了一丝坚定,他这一个昔日不被猿飞看重的自来也却是真正的继承了猿飞传承下来的意志,只可惜在初代和二代死后真正的火之意志就已经熄灭了,猿飞继承的火之意志根本就是一个阉割版。

“紫妍你可别杀了他。”刘皓看到紫妍发火发得差不多了,北龙王被紫妍打得奄奄一息了,连忙走过去阻止道。

百度了一圈calll()函数和apply()函数,感觉还是糊里糊涂

正好我前几天刚又重新翻了一遍 那本 600多页 的圣经书,我习惯时不时的去打下基础,只是为了用来装逼,给人讲解。。。。(我是有多蛋疼)!

好了下面针对这个问题,我看好多小朋友 都不理解或者很迷惑,确实容易绕晕,毕竟是js独有的面向对象

嘛,你要一下理解了 才是不正常。开始: 先说call 这个东西

NO 1:我们先看一个简单的例子 1+1 = 2 你应该会吧


function add(a,b)  
{  
    alert(a+b);  
}  
function sub(a,b)  
{  
    alert(a-b);  
}  

add.call(sub,1,1);  //  结果是?  ‘2’  还是   ‘0’  呢

 

这里写代码片有人说是 1+1 =2; 有人说明显变成 1-1 = 0 了嘛! 
其实 add.call(sub,1,1); 等价于add(1,1) = 2 。。。。。

那你这不是脑残吗?非要多此一举 弄个该死的call ,搞毛? 直接 add(1,1) 不行了吗?

我不太懂了,add.call(sub)了,肯定是add直接sub里面的减法了呀,不然弄个call干嘛呀?

什么场景下会用到call, apply 这种装逼的写法呢;


好了,下面我们针对,群里的小伙伴提出的疑问一一解答:


  1. 那你这不是脑残吗?非要多此一举 弄个该死的call ,搞毛? 直接 add(1,1)

    答:其实 这个写法就是再举个例子 ,大家不要被迷惑 
    
        正常写这种加减法功能 谁会脑残这样多此一举? 嘿嘿 我偷笑!
    
    • 1
    • 2
    • 3
    • 4
  2. 我不太懂了,add.call(sub)了,肯定是add直接sub里面的减法了呀,不然弄个call干嘛呀?

    答:call的用法和意义:
    
    官方解释:
    
    • 1
    • 2
    • 3
    • 4

    call和apply可以用来重新定义函数的执行环境,也就是this的指向; call 和 apply 都是为了改变某个函数运行时的 
    context 即上下文而存在的 换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 
    的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

    call():

    • 语法:call(Obj,[arg1][arg1])

我的白话文:


call 就是中间牵线的,sub说 我需要 add 你的方法 和技能,

比如:add会飞天 ,但sub 不会飞,现在sub想飞,但add不让它飞,所以sub就叫来了 call 这个东西, call直接把add爆菊 

加上一个 点 然后把sub抱到括号里,然后 sub 就直接把add 的“飞天”技能学会了,回到函数
----------


function add(a,b)  
{  
    alert(a+b);  
}  
function sub(a,b)  
{  
    alert(a-b);  
}  

add.call(sub,1,1); 
 //  结果是 sub直接集成了 add 的“飞天”技能  sub alert里面 直接变成了 “a+b”!主角还是sub,并不是add ,你要搞清楚!

 

 3. 什么场景下会用到call, apply 这种装逼的写法呢;

    答:看例子 

 

 

        function changeStyle(attr, value)
        {     
            this.style[attr] = value; 
         }  
        var box = document.getElementById("box");  
        window.changeStyle.call(box, "height", "200px");

 

在这里,changeStyle函数将被box对象调用,this指向了box对象,如果不用call的话,程序报错,因为

window对象中没有style属性。apply的用法:

window.changeStyle.apply(box, [‘height’, ‘200px’]);

现在 window对象 “box” 这个div 的高 直接变成200px了,

window.changeStyle.call(box, “height”, “200px”)

等价于 box.style.height=”200px”;

看到这里应该明白了吧 没如果还没明白

apply() 这个用法

window.changeStyle.apply(box, [‘height’, ‘200px’]);

看了这个写法 你应该明白了把, 啊哈其实 就是写法 和形式不同而已,本质是一样的,apply(),是推进到

数组里而已,也是为了改变this、

这个,也是为了偷 add 的飞天技能哈!

总结一句话:call() 就是用来让括号里的对象 来集成括号外的函数的属性!可以称之为继承!

编辑:海文道

发布:2019-03-19 06:31:24

当前文章:http://adsl66.com/ask/question_93753.html

推广拿佣金的app 制作网贷推广app 中国农技推广app积分有什么用 is语音兼职打字单 郑州跑滴滴一天赚多少 max  投稿赚钱 日赚兼职 先迈网一天能赚多少钱

40745 37475 21796 64113 77220 1574660933 32678 56385

我要说两句: (0人参与)

发布