江苏龙网


首页 > 人文 >>

javascript函数的调用模式有哪几种

『江苏龙网摘要:javascript函数的调用模式有哪几种|函数是JavaSc』一、通俗函数的调用模式 所谓通俗函数的调用模式,也是JavaScript函数的最简单的一种调用模式,直接就是函数名后接一个 () 实现调用,看下面代码:function func(){\n console.log(this === window); //true\n}\nfunc(); 膳绫擎代码,我们用funct...



按关键词阅读:

函数是JavaScript世界里的第一公民,换句话来说,就是我们如果可以精通JavaScript函数的使用,那么对JavaScript的运用可以更游刃有余了。熟悉JavaScript的人应该都知道,同样的函数,以不同的方式调用的话,受影响最大的应该是 this 。下面我们来说说JavaScript函数的各种调用模式。
一、普通函数的调用模式
  所谓普通函数的调用模式,也是JavaScript函数的最简单的一种调用模式,直接就是函数名后接一个 () 实现调用,看下面代码:
function func(){ console.log(this === window); //true}func();  上面代码,我们用function关键字声明了一个 func 函数,并且在函数体内打印 this===window,然后我们直接调用函数func,我们可以看到控制台是直接打印出 true ,也就是说,函数的这种普通调用模式,函数体内的 this 是指向全局环境 window 的。不清楚这点的同学,可以能会遇到这样的一个bug:
var color = \u0026#39;gg\u0026#39;;var obj = { color : \u0026#39;red\u0026#39;, show : function(){ function func1(){ console.log(this.color); //gg } func1(); }}obj.show();  我们在全局环境下声明了一个变量 color 和一个对象 obj ,在对象 obj 里面我们还声明了一个 color 属性 为 \u0026#39;red\u0026#39;,一个 show 方法。而且在 show 方法里面呢,我们还声明了一个函数 func1 并且调用了 func1,func1 的作用是打印 this.color。最后我们运行代码 obj.show(); 调用obj里面的show方法。不清楚函数的普通调用模式的特点的同学可能会认为此时在控制台答应出来的会是 \u0026#39;red\u0026#39; 。实际上此时在控制台答应出来的应该是 gg 。因为函数 func1 的调用模式是 普通函数调用模式(即使它是在 obj 的 show 方法里面调用的),所以此时函数体内的 this 是指向 全局环境window 的,所以就打印了全局环境下的变量 color 。
  可能有些同学会问:如果我们希望 func1 函数打印出来的是 \u0026#39;red\u0026#39; 呢,应该怎么改?其实很简单,因为 obj.color 才是 \u0026#39;red\u0026#39; ,所以我们只需要把 指向 obj 的 this 引入到函数 func1 里面就行了:
var color = \u0026#39;gg\u0026#39;;var obj = { color : \u0026#39;red\u0026#39;, show : function(){ var that = this; function func1(){ console.log(that.color); //red } func1(); }}obj.show(); 在上面的代码中,因为 show 里面的 this 指向 obj 的,所以我们在 show 里面声明一个变量 that = this;用来把指向 obj 的 this 引入到 func1 中,然后再把 func1 函数体内的 this.color 改为 that.color ,此时在控制台打印出来的就是我们想要的 \u0026#39;red\u0026#39; 了。
  可能现在又有同学会问:为什么 show 里面的 this 是指向 obj 的呢?这就是我们要说的JavaScript函数的第二种调用模式:方法调用模式
二、方法调用模式
  方法调用模式,简单来说就是把一个 JavaScript函数作为一个对象的方法来调用,当一个函数被保存为一个对象的属性是,我们就把它称为方法,例如上文的 obj 对象里的 show ,当一个方法被调用时,函数体里面的 this 就会绑定到这个对象,例如上文的 show 里面的 this 。方法调用模式也很容易辨别:obj.show(),对象名 . 属性名 () ;代码的话可以参考上文的 obj 代码 ,博主就不多写了。记住:方法的调用是可以在函数体内通过 this 访问自己所属的那个对象的。


来源:(未知)

【江苏龙网】网址:http://www.jiangsulong.com/news/1124Y1F62020.html

标题:javascript函数的调用模式有哪几种


上一篇:怎样在上海流浪

下一篇:怎样评价准星云学这家公司?


生活

饮食|网红减肥秘籍,怎么吃也不胖的诀窍

阅读(22)

当放慢饮食速度以后,就可以在饱腹感和食欲消失时吃更少的食物,从而收获减少热量摄入和保持身材的效果。每一口食物要咀嚼三十到四十下左右。一餐饮食要吃十五分钟以上。另外...

人文

大家有做Hadoop大数据开发的吗

阅读(38)

涉及到的范畴也异常多:营销,金融,工业,医疗,教导,交通,保险,法律,体育,当局,旅游,物流等范畴都有效到大年夜数据开起身术。大年夜数据开辟涉及到的技巧也异常多:JAVA/HADOOP/SPARK/SCALA/PYTHON/机械进修/linux/mysql等一系列技巧,要学的器械异...

人文

计算机二级怎样学习

阅读(46)

常识兔计算机二级测验题库材料包含最新测验大年夜纲、教材复习材料、视频课程、积年真题和样题、模仿题库演习软件、模仿测验体系、视文静解、测验教材、电子教材、测验所需软件安装包!重点来啦!怎么领取?"大众,"号超乎想象领取测验材料,赶紧领取,尽早安...

人文

有些人,一进部落就要长老,副首领,这种人啥心态

阅读(20)

一朝权在手,便把令来行。权力这个东西对控制欲强的人极具诱惑力,因为可以刷存在感,哪怕是游戏世界里芝麻大小的权力。当然还有人是因为受不了别人的管教和限制。 ■网友 很自以为是,感觉自己很厉害吧,一手友谊战打服他。 ■网友 大部分都是小学生心态,求...

人文

以下代码的运行结果时间不为0的可能原因有哪些

阅读(39)

大年夜法度榜样运行的角度看,DateTime.Now底层调用的是GetSystemTimeAsFileTime,这个函数会攫取体系的时钟计数,这个计数是随时更新的,更新的距离与硬件和体系设置有关。这个距离可以用下面的代码测一下。startTime = DateTime.Now.Ticks;\ndo\n{\n end...

人文

快递发发是个啥平台

阅读(35)

网站名称:快递发发开创人:李勇虎总部地点:深圳网站标语:代收货款又快又安然ICP立案号:粤ICP备15010928号立案审核时光:2015-08-31一、对用户供给的功能及办事1、智选物流综合各个快递地址库、时效库、价格库及办事质量智能拔取物流。2、在线发货单件或批...