JS 核心语言基础语法 之 引用类型Function

举报
hwJw19 发表于 2020/08/04 15:46:09 2020/08/04
【摘要】 今天这篇文章,我们来说说引用类型中的Fuction。在说Function之前,简单说一嘴RegExp,就是正则表达式啦,关于正则表达式,我也没有仔细研究过,每次有需求,需要使用的时候,就找度娘查一查,会用就行,偶尔也会根据需求自己简单改一改,所以说我就是会简单使用,有兴趣的同学可以自己研究下~

今天这篇文章,我们来说说引用类型中的Fuction。在说Function之前,简单说一嘴RegExp,就是正则表达式啦,关于正则表达式,我也没有仔细研究过,每次有需求,需要使用的时候,就找度娘查一查,会用就行,偶尔也会根据需求自己简单改一改,所以说我就是会简单使用,有兴趣的同学可以自己研究下~,还是说回此文重点,function,function是啥,顾名思义函数嘛,在我的理解力,函数就是用来实现某些功能的代码块,我们把一个功能整理好放在一个函数里,并给这个函数取个名字,当我们需要使用这个函数的时候,就直接调用它就可以了,而且,可以实现哪里需要哪里调用,会很方便。

下面我们结合思维导图,看看函数,我们需要了解的知识有哪些喽

我们按照思维导图的顺利缕着说啊,先来说函数的创建方式,函数的创建方式一共有五种:

  1. 函数声明方式:

function name(args){
    //运行代码
};

  2.函数表达式

var a = function(args){
    //运行代码
}

  3.命名函数表达式(很少使用)

var a = function b(args){
    //运行代码
}

  4.箭头函数

(arg) => {
    //运行代码
}

  5.函数生成器

function *(){
    //运行代码
}

  6.构造函数器

new Function()

以上是创建函数的方式,记住怎么写,能创建就可以啦,具体各个方式的区别,我有时间的时候,整理出来,再跟大家分享。

下面说一个概念,叫自执行函数,看名字理解哈,就是函数不用调用,自己就会执行,也许大家看到过别的的代码,会用小括号括起来的啊,有各种特殊符号的啊,具体看我上面的导图,这些都是自执行函数的写法,大家看到知道并且会用就行了,图中自执行函数的写法,已经是按性能排序之后的啦。

函数的属性主要是length和prototype,length是函数定义时给出的参数个数:

function name(a, b, c){
    console.info(arguments.length)
};
console.info(name.length);  // 3

至于prototype,它是一个指针,指向的是函数的原型对象,这个对象十分重要,而且还有点复杂,在基础知识里,就先不说了,后面在讲到面向对象的知识的时候,我们再来学习这个属性。

最后,本文要说的是函数的方法,apply()、call()、bind()。

先来说apply和call,为啥要把他俩放一起呢,因为他俩其实实现的功能是相同的,都可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下

文改变为由thisObj指定的新对象。

不同点呢是传入参数的形式不同:

apply接受两个参数,第一个参数指定了函数体内this对象的指向,第二个参数为一个数组,B.apply(A, arguments);即A对象应用B对象的方法。

call可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表,B.call(A, args1,args2);即A对象调用B对象的方法。

二者的等价写法是:foo.call(this,arg1,arg2,arg3) == foo.apply(this, arguments)==this.foo(arg1, arg2, arg3)

而bind是用来指定函数内部的this指向用的,对于apply、call和bind的具体用法,请移驾我博客园的博文(这里我就不把相关内容移植到本文了,免得又被判定为抄袭,哈哈)

文章地址:https://www.cnblogs.com/jiangtengteng/p/9667769.html


寄语共勉:有种力量叫放大目标,有种智慧叫把问题缩小,我们的终极目标是学好JavaScript,小目标是尽量掌握好每个小知识点~


拜拜喽各位~


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。