分享好友 最新动态首页 最新动态分类 切换频道
b2b平台的特点/抖音搜索seo排名优化
2024-12-26 21:11

接上篇:[ES6]Day08—Object对象的拓展

9.1 函数的定义和调用

9.1.1 函数的定义方式
1、自定义函数(命名函数

即利用关键字声明函数

 
2、函数表达式(匿名函数

即利用声明函数

 
3、new Function( ) 构造函数

语法

 
参数含义’ arg1’, ‘arg2’,’…argN’为调用func函数需要传入的参数,每个参数都要单引号括起来,需要传字符串类型,用逗号分隔,func函数体,需要单引号括起来,需要传字符串类型
 
  • Function里面参数都必须是字符串格式
  • 执行效率低,不方便书写,比较少使用
  • 所有函数都是Function 的实例对象
  • 函数也属于对象,JS里万物皆对象
9.1.2 函数的调用方式
1、普通函数
 
2、对象内的函数
 
3、构造函数
 
4、绑定事件函数
 
5、定时器函数
 
6、立即执行函数
 
 

9.2 this

9.2.1 函数内的this指向

函数内的指向,是当我们调用函数时确定的,调用方式的不同决定了 的指向不同,一般指向我们的调用者

调用方式this 指向普通函数调用window构造函数调用实例对象 原型对象里的方法也指向实例对象对象方法调用该方法所属对象事件绑定方法绑定事件的对象定时器函数window立即执行函数window
9.2.2 改变函数内部this指向

、、 三种函数可以改变 指向

1、call()

语法

参数含义this 的指向对象为调用func函数需要传入的参数,全都用逗号分隔,直接放到后面

作用,并函数运行时的

例子

 
 
2、apply()

语法

参数含义必选的。在 func 函数运行时使用的 this 值。请注意,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。可选的。但是必须是一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 func 函数。如果该参数的值为 null 或 undefined,则表示不需要传入任何参数。从ECMAScript 5 开始可以使用类数组对象。

作用: 方法调用一个参数为,给定this值的函数。

例子

 
 
 
3、bind()

语法

参数含义this 的指向对象调用func函数需要传入的参数,全都用逗号分隔,直接放到后面,返回一个函数(闭包,函数延迟执行,需要调用才执行return返回由指定的this值和初始化参数改造后的,相当于返回一个新的函数

作用:bind()不会调用函数,但是能改变函数内部的this指向。 如果有的函数不需要立即调用,但是又想改变这个函数内部的this指向此时用

例子

 
 

实例: 有一个按钮,当我们点击之后,禁用按钮,3秒钟后开启按钮

 
 
4、call() 、bind() 、 apply() 区别
 

相同点

1、都可以改变上下文 this 指向的,第一个参数都是 this 的指向对象
2、三者的参数不限定是string类型,允许是各种类型,包括函数 、 object

不同点

1、、 会调用函数,并且改变函数内部this指向。

2、传递参数形式不同, 后面的参数全都用逗号分隔 , 后面的参数必须传一个数组

 

3、不会调用函数,除了返回的是以外,它的参数和一样。如果有的函数不需要立即调用,但是又想改变这个函数内部的this指向此时用方法
    
4、应用对象不同,、 是直接使用在函数上,而 绑定 this 后返回执行上下文被改变的函数(闭包,不会立即执行,需要才会执行。

5、主要应用场景不同,常用在继承; 经常与数组有关,比如借助于数学对象实现数组最大值最小值;不调用函数,但是还想改变this指向。比如改变定时器内部的this指向。

 

9.3 严格模式

9.3.1 什么是严格模式
9.3.2 开启严格模式
9.3.3 严格模式下的变化
1、变量必须先声明再使用
 
 
2、不能随意delete 已经声明好的变量
 
 
3、严格模式下全局作用域中函数的this是undefined

在正常的全局作用域中 指向

 
 
4、严格模式下,构造函数必须 new 调用
5、new 实例化的构造函数指向创建的对象实例
 
 
6、定时器 this 还是指向 window
 
7、事件、对象中的 this 还是指向调用者
8、严格模式下,函数中的参数不允许有重名
 
 
9、严格模式禁止不在脚本或者函数层面上的函数声明。
 

想了解更详细看这里 严格模式-MDN

9.4 高阶函数

什么是高阶函数

高阶函数是对其他函数进行操作的函数,至少有这两大特征之一

  • 接收函数作为参数
  • 将函数作为返回值输出

函数也是一种数据类型,同样可以作为参数,传递给另一个参数使用,最典型的就是作为回调函数。

 
 

9.5 闭包

9.5.1 变量作用域

变量根据作用域的不同分为两种:全局变量和局部变量。

  1. 函数内部可以使用全局变量。
  2. 函数外部不可以使用局部变量。
  3. 当函数执行完毕,本作用域内的局部变量会销毁
9.5.2 什么是闭包

是指的 函数

简单来说,一个作用域可以访问另外一个函数内部的局部变量

的作用:延伸了变量的作用范围

例子

 

解决思路

将 函数作为 函数的返回值,用一个变量在外部接收,由于返回值为一个函数,所以调用 就可以得到 num 的值

 
9.5.3 闭包的应用
1、循环注册点击事件

但是闭包会产生问题,因为创建了 立即执行函数 ,应该要马上销毁变量 ,但是这里要等点击事件执行了才能销毁变量

2、循环中的setTimeout()
3、计算打车价格

// 打车起步价13(3公里内,之后每多一公里增加5块钱,用户输入公里数就可以计算打车价格
//如果有拥堵情况,总价格多收取10块拥堵费

 
4、思考题1
 
 
 

所以执行下面这段代码

 

综上所述这道题 没有局部变量的访问,不存在闭包(有点坑,哈哈哈,最终答案为"The Window"。

5、思考题2
 
 

这里的 that 指向 object 这个对象,所以 that.name =“My Object” ,这道题存在一个闭包就是getNameFunc()

9.5.4 闭包的总结
1、闭包是什么

是一个作用域可以访问另外一个函数的局部变量的

2、闭包的作用是什么

延伸变量的作用范围

9.6 递归

9.6.1 什么是递归

如果,那么这个函数 就是 ,简单来说,就是函数内部自己调用自己。

 
9.6.2 递归的应用
1、求 1 * 2 * 3 … * n 阶乘
 
 
2、求斐波那契数列(兔子数列)1,1,2,3,5,8,13,21 …

用户输入一个数字n ,可以得到这个数字对应的兔子序列值

1+1=2,1+2=3,2+3=5,3+5=8,5+8=13 … 相邻两个数相加等于第三个数

第三个数=前两项之和 n=(n-1)+(n-2)

 
3、根据 id 找数据对象

输入商品id ,找到商品信息


最新文章
谷歌地图上怎么入驻自己店铺的信息
2024年01月14日吴经理100地图标注 , 地图定位 , 导航地图标记网络技术服务;信息技术咨询服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;日用百货销售;化妆品零售;互联网销售(除销售需要许可的商品);化妆品批发;服
聊天群里有帝骑的小说
先叠BUFF。【非洪荒流】【非阴谋论】【主线剧情是追求长生】【设定参考《西游记》原著】【修行法门参考道家内丹术】【修炼体系参考钟祖的五仙论】【没后宫】……穿越到西游世界的楚昊,拜入菩提祖师门下,本想在斜月三星洞做个小咸鱼,却意
请回答2024丨西贝贾国龙:价格战的做法不可取,应加深护城河达到“向上卷”的目标
  封面新闻记者  吴雨佳  ‌2024年,餐饮行业的现状复杂多变。国家统计局数据显示,今年1-8月份,餐饮收入34998亿元,同比增长6.6%。大盘仍在稳定增长的同时,餐饮业也面临着价格战、利润下降、旺季不旺等难题。数据显示,今年截至8
福建省人事考试网:2024年福建省中级经济师考试成绩复查通知
2024年12月13日,福建省人事考试网发布了2024年福建中级经济师考试成绩复核通知,明确福建人事考试中心在2024年12月13日至12月27日受理福建考区成绩核查申请,具体内容已整理如下,请参阅。2024年度初级、中级经济专业技术资格考试福建考区
韩国非常大度的电影原声引热议,网友笑称:这是史上最宽容的BGM!
韩国非常大度的电影原声最近成为了热搜的常客。网友们纷纷表示:“这不仅仅是电影的配乐,而是直接升级成了灵魂BGM!”一位观众感叹:“故事本身很吸引人,但一旦原声响起,情绪直接拉满。”还有人调侃:“这大度的音乐,完全是在为整部电影
不想露脸怎么做自媒体?用AI生成超逼真美女写真!
我们已经初步测评了这些工具的特点和功能,接下来强调一下搜狐简单AI的优势:它不仅操作简便,界面友好,而且其AI生成的美女写真图像质量极高,完全可以媲美专业摄影作品。无论你是想要尝试创作,还是需要用于社交媒体展示,这个工具都能够
东营人自己的马尔代夫
UAndroid刷机工具
UAndroid刷机工具提供了本地安卓平台的各款手机型号的一键刷机服务,所有的内容会及时进行解锁,保持常态化的维护,并实行ROOT权限的获取以及BL锁的解除,整体项目内容也会持续跟踪后续发展态势,对于众多的项目内容会及时保持数据同步,给
新澳2024年免资料费,效率资料解释落实_HD48.32.12
新澳2024年留学政策中引入了“免资料费”优惠显著降低了申请成本。为充分利用这一政策申请者需详细了解其具体细则结合自身情况制定资料准备计划。主要内容包括:1. 在线提交申请所有信息均通过官方网站填写。2. 电子化档案管理方便查询和维
竹苑社区全面升级,品牌重塑与生活品质提升工程
竹苑社区进行全面网站优化及推广,旨在重塑社区品牌形象,提高居民生活品质,通过创新服务与提升社区功能,打造宜居环境。随着互联网的飞速发展,社区网站作为居民生活的重要平台,其优化推广显得尤为重要,作为一家具有深厚底蕴的社区,为
相关文章
推荐文章
发表评论
0评