js中的this

函数调用方式:

1作为函数

2作为方法

3作为构造函数

4通过call()和apply()间接调用


函数调用:使用调用表达式可以进行普通的函数调用也可以进行方法调用。若函数表达式是一个属性访问表达式,即该函数是一个对象的属性或数组中的一个元素,那么他就是一个方法调用表达式。

普通调用表达式:

foo({x:1});

var total=aaa(0,1,2)+bbb(4,5,6);

var  ccc=ddd(5)/ddd(6);

对于普通函数调用,函数返回值成为调用表达式的值。若该函数返回是因为解析器到达结尾,返回值就是undefined。若函数返回是因为执行一条return语句,返回值就是return之后的表达式的值。若return语句没有值,则返回undefined。

方法调用:

一个方法无非是个保存在J一个对象的属性里的avaScript函数。若有一个函数f和一个对象o,则可用以下代码给o定义一个m()的方法:

o.m=f;//给o对象定义了一个方法m();

调用时:o.m();

方法调用和函数调用的区别:调用上下文不同。属性访问表达式由两部分组成:一个对象和属性名称。在这样的方法调用表达式里,对象成为调用上下文。函数体可以使用关键字this引用该对象。

this:this关键字没有作用域的限制。嵌套的函数不会从调用它的函数中继承this。若嵌套函数作为方法调用,其this值指向调用它的对象。若嵌套函数作为函数调用,其this值不是全局对象(非严格模式)就是undefined(严格模式)。注意:调用嵌套函数时,this不会指向调用嵌套函数外层函数的上下文。若想访问这个外部函数的this值,需要将this值保存在一个变量里,这个变量和内部函数同在一个作用域。

构造函数调用:

若函数或者方法前面带有关键字new,它就构成构造函数调用。JavaScript构造函数调用语法允许实参列表和()。

eg:var o=new Object();与var o=new Object;等价。

构造函数将创建一个新对象。这个对象继承自构造函数的prototype属性。构造函数试图初始化这个新创建的对象。并将这个对象用作其调用山下文。因此,构造函数可以使用this关键字引用这个新创建的对象。注意:尽管构造函数看起来像一个方法调用,它依然会使用这个新对象作为调用上下文,即:在表达式new o.m()中,调用上下文并不是o。

间接调用:call()和apply()方法。



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值