位置: 编程技术 - 正文

详解JavaScript中this关键字的用法(javascript that)

编辑:rootadmin

推荐整理分享详解JavaScript中this关键字的用法(javascript that),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascriptthis,javascript entries,javascriptthis,js中的throw,js中throw的用法,js中throw的用法,javascript that,javascript tr,内容如对您有帮助,希望把文章链接给更多的朋友!

this是函数内部的一个特殊对象,this引用的是函数据以执行的环境对象(关于环境对象我们会在文章最后作补充说明),在调用函数前this的值并不确定,不同的调用方式会导致this值的改变。

记住:函数名仅仅是一个包含指针的变量而已。因此即使是在不同的环境中执行,全局的sayNum()函数与o.sayNum()指向的仍然是同一个函数。

1.全局作用域中调用函数时全局作用域中调用,this对象引用的是window匿名函数的执行具有全局性,因此其this对象通常也指向window

2.通过new操作符调用this引用的是实例对象

3.作为对象的方法调用this引用的是该对象

4.间接调用call和apply每个函数都包含两个非继承而来的方法:call()和apply()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。也就是说,直接调用函数,调用时指定执行环境是谁

(1)apply方法接收两个参数,一个是在函数中运行函数的作用域,另一个是参数数组。

(2)call方法call方法与apply方法相同,区别在于接收参数的方式不同,对于call方法而言,第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。

5.bind方法这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。也就是说会返回一个新函数,并且使函数内部的this为传入的第一个参数

补充说明:执行环境定义定义了变量或者函数有权访问的其他数据,每个执行环境都有一个与之相关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。我们编写的代码无法访问这个对象,但解析器会在处理数据时在后台使用它。一、执行环境的创建:

详解JavaScript中this关键字的用法(javascript that)

1.全局执行环境在web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。代码载入浏览器时,全局执行环境被创建(当我们关闭网页或者浏览器时全局执行环境才被销毁)。

2.局部执行环境每个函数都有自己的执行环境,因此局部执行环境为函数对象。当函数被调用时函数的局部环境被创建(函数内的代码执行完毕后,该环境被销毁,同时保存在其中的所有变量和函数定义也随之被销毁)。

这个执行环境以及相关的变量对象是个抽象的概念,解释如下

二、作用域链javascript函数的执行用到了作用域链,这个作用域链是函数定义的时候创建的,当定义一个函数时,它实际保存一个作用域链。当调用这个函数时,它创建一个新的对象来存储它的局部变量,并将这个对象添加至保存的作用域链。作用域链的前端始终都是当前执行的代码所在环境的变量对象。作用域链的末端始终都是全局执行环境的变量对象。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有权访问

理解:当调用checkscope时,函数f被定义并作为局部变量绑定到了checkscope作用域链上,因此函数f无论在哪里调用,这种绑定依然有效,因此返回值为local scope。

作用域链(向上搜索):内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。

越往内部的环境,变量权重越高。

注意:没有带var关键字直接声明的变量属于全局变量如直接声明a = 1,此时的a为全局变量。

javscript引擎在进入作用域时,会对代码分两轮处理。第一轮,初始化变量。第二轮,执行代码

三、函数执行函数调用进入执行环境时,首先处理arguments,初始化形参(默认值为undefined),然后初始化函数内的函数声明,当代码一步一步执行时再初始化函数内的变量声明(进入环境未开始执行代码时,值为undefined)。所以函数内的初始化顺序为形参,函数声明,变量声明。可以从上图图一看出。下面我来举个例子(整个全局环境也是函数)。

辨析JavaScript中的Undefined类型与null类型 Undefined表示变量已声明,但未被初始化。需要注意的是当使用typeof操作符判断数据类型时,未被声明的变量和未初始化的变量返回的值都为undefinedvarmessa

JavaScript中的Number数字类型学习笔记 使用IEEE格式来表示整数和浮点数值。浮点数值:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。浮点数值需要内存空间是保存整

简单总结JavaScript中的String字符串类型 String类型表示由0或多个位Unicode字符组成的字符序列,即字符串。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。

标签: javascript that

本文链接地址:https://www.jiuchutong.com/biancheng/370076.html 转载请保留说明!

上一篇:轻松掌握JavaScript中的Math object数学对象(轻松掌握瓷砖铺贴技术 pdf)

下一篇:辨析JavaScript中的Undefined类型与null类型(javascript的区别)

  • 公司债券和企业债券哪个风险大
  • 哪些情况需要提高警惕小心毒品
  • 税务定税按什么标准
  • 工资怎么扣费
  • 限定性净资产账务处理
  • 公司举办年会的要求有哪些
  • 进项大于销项怎么结转分录
  • 发票开票地址是注册地址还是经营地址
  • 自产自用应税消费品的消费税,其纳税环节
  • 费用票如何做账务处理
  • 收到进项发票已认证,对方冲红重开,我方凭证什么做
  • 调整汇算清缴利息怎么算
  • 预付费卡税务处理
  • 房地产出租是否缴纳土地增值税
  • 企业捐赠不动产 会计分录
  • 业务招待费的扣除标准是什么2022
  • 计提房屋折旧会计分录
  • 开具的增值税专用发票上注明的金额
  • 职工福利增值税的处理
  • 物业公司代收水费合理吗
  • 企业所得税少交了被税局查到怎么处理
  • 增值税发票已作废怎么办
  • 企业开税票申报个人所得税怎么申报?
  • 个体工商户餐饮业税率是多少
  • 增值税开票系统收款人在哪里设置
  • 不适用研究开发费用税前加计扣除政策的有
  • 注册资本使用后账务如何处理
  • 建筑装饰行业税负
  • 以销定产 以产定销
  • 计提本月城市维护建设税,教育费附加500元
  • 返利冲减销售收入还是进费用
  • win10指纹传感器在哪里
  • ps不支持win7吗
  • 华为鸿蒙系统网速慢怎么解决
  • 外汇关闭时间
  • 累积未分配利润为负可以分红吗
  • 完美解决战网已休眠正在唤醒它
  • 基于强化学习的智能机器人路径规划算法研究(附代码)
  • php控制结构
  • 怎么才能学a1
  • merge命令合并不了数据
  • 小规模升级一般纳税人后可以降为小规模吗
  • 帝国cms灵动标签怎么调用
  • python lzo
  • 织梦前台数据不能存入中文
  • 财务报表的组成主要包括
  • mysql基础操作命令
  • 电子承兑背书了能撤回吗
  • 融资性售后回租承租方为什么不交税
  • 查补以前年度税款
  • 外经证预缴税款的附加税所属期写错怎么办
  • 城镇土地使用税怎么算
  • 收汇结汇以什么汇率入账
  • 商场预付卡
  • 利润表中管理费用根据什么填
  • 手工账明细账怎么登记
  • windows91
  • xp系统重启后自动还原怎么办
  • win7如何新建用户
  • ubuntu安装office2019
  • winnook.exe - winnook是什么进程
  • ensmix32.exe进程安全吗 ensmix32进程是什么文件产生的
  • windowsxp文件夹里面的文件突然消失
  • Linux进入图形界面卡顿
  • windows7如何关闭夜间模式
  • 不经过回收站直接删除文件的操作是
  • win10系统登录密码忘了怎么办
  • 安卓listview的用法
  • python 字典怎么用
  • 页面滚动到底部
  • 如何做好设计师
  • linux释放cache
  • javascript文本框获得焦点
  • javascript七种数据类型
  • 福建2021年水利水电招聘
  • 发票单位可以开一批吗?
  • 深圳增值税勾选平台网址
  • 纳税人欠缴税款数额在10万元以上
  • 深圳市福田区行政代码是多少
  • 成都国税发票领取地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设