这旷世神功无敌的功力他居然不惜全部传授给周芷若和小昭让自己功力尽失成为一个普通人,这让黛绮丝实在是难以理解。

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


百度了一圈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() 就是用来让括号里的对象 来集成括号外的函数的属性!可以称之为继承!

当前文章:http://hnhdqp.com/play/h9nudbk5gm.html

发布时间:2019-01-23 11:36:07

单机斗地主旧版本3.7.0 网络德州扑克执照审批 集杰辽阳棋牌麻下将 金都棋牌在哪下载 足球大小球在哪里买 牌友德州扑克有作弊吗 正宗上海麻将清混碰 手机炸金花有没有假 四川长牌游戏大全 线上德州扑克网站

编辑:开道

相关新闻

定边县委十七届二次全委(扩大)会议召开

2019-01-23 05:43:07

丽江继约掏电子有限公司

俄罗斯女野人曝光:全身毛发裸体奔跑

2019-01-23 05:38:46

晋江盘弊赌工贸有限公司

发现世界上最早树木化石 具有4.07亿年历史

2019-01-23 04:19:40

广东月瓤集团有限责任公司

“争做文明市民 共享幸福神木”晚会隆重举行

2019-01-23 13:01:42

武夷山孛了工贸有限公司

热门推荐

  • B&O耳机Beoplay E8体验:安守本分的丹麦“无线豆”
  • 工信部重申:三大运营商不得限制老用户选择资费套餐
  • 小区游泳池归谁?到底能不能对外开放?
  • 社科院研究生院工商学院院长助理杨小科:依托大数据优势提升价值
  • 《魁拔》最终章《最后的魁拔》正式重启 海报公开
  • 澳洲原瓶进口/多项获奖,the pond赤霞珠干红葡萄酒750mL×6支174元(减75元)
  • 任天堂在中国的实验:一场持续15年的中文化运动
  • 阿富汗油罐车遭袭爆炸波及大巴 15人身亡27人伤
  • 话题:如果剑网3做了一款《暖暖环游大唐》的衍生手游
  • 吐鲁番漳吞美容美发化妆学校
  • 河北新闻网版权所有 本站点信息未经允许不得复制或镜像 法律顾问:797棋牌游戏中心手机版 益阳王者棋牌官网
  • 血流成河换三张牌型 copyright ? 2000 - 2016
  • 新闻热线:0311-67563366 广告热线:0311-67562966 新闻投诉:0311-67562994
  • 冀ICP备 09047539号-1 | 互联网新闻信息服务许可证编号:1312006002
  • 广播电视节目制作经营许可证(冀)字第101号|信息网络传播视听节目许可证0311618号
  • 波克棋牌手机完整版 鱼扑克德州扑克作弊 德扑圈官网 棋牌合集app