Javascript中this关键字指向问题的示例分析

这篇文章主要介绍了Javascript中this关键字指向问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

我们提供的服务有:网站制作、成都网站制作、微信公众号开发、网站优化、网站认证、尼河口ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的尼河口网站制作公司

测试题目

第一题

第二题

第三题

第四题

答案

  • 第一题:zhangsan wangwu zhangsan

  • 第二题:zhangsan zhangsan

  • 第三题:我叫zhangsan 我叫zhangsan

  • 第四题:zhangsan zhangsan zhangsan lisi wangwu

(往下看,下面有详细解析哦)

this

  • 指向调用函数的对象

  • 无对象调用函数/匿名函数自调用(this指向window)

  • 通过new产生的对象

  • apply/call调用

一、指向调用函数的对象

  • 全局函数(demo)属于window对象的方法,window调用demo所以this就指向了window

  • obj调用say方法,this就指向了obj

  • fun()是全局函数,而声明的fun接收的是obj里面单纯的一个函数,并没有调用(obj.say()才是调用了函数),此时的fun就是一个函数(function(){alert(this.str);}),那么当fun()调用函数的时候,this指向的就是window

  • 是谁调用的函数,那么this就指向谁

二、无对象调用函数/匿名函数自调用->this指向window

  • 因为匿名函数没有名字,所以就挂给window了

  • test(),谁调用test那么就指向谁。当然实验过,它不是window调用的,也不是demo调用的,没有人管它,那么它就指向window。它就相当于一个没有主人调用它,无主函数。

三、通过new产生的对象

  • 当我们的函数Person里面运用了this去写属性和方法这种格式,那么就要通过new来让属性和方法变得有价值,通过new去运用函数里面的属性和方法

四、apply/call调用

首先我们来了解下apply()/call()是个什么东西呢?

apply()/call():最终是调用function,只不过内部的this指向了thisObj

function.call([thisObj[,arg1[, arg2[, [,.argN]]]]])
function.apply([thisObj[,argArray]])

注意:

1. 调用function函数,但是函数内的this指向thisObj(更改对象内部指针)

2. 如果thisObj没有传参,则默认为全局对象

3. call()/apply()联系与区别

    联系:功能一样,第一个参数都是thisObj

    区别:传递的参数如果比较多

        call()的实参就是一一列出

        apply()的实参是全部放置在第二个数组参数中

一个理解apply()/call()的实例:



this的第四个用法实例

  • 如果直接调用demo里面写的不管是obj1还是obj2,那么demo还是属于window调用的。

  • 不管你用call还是apply最终调用的都是demo函数,但它们会强制的this指向了obj1/obj2,强制的指向了它们的第一个参数对象。

感谢你能够认真阅读完这篇文章,希望小编分享的“Javascript中this关键字指向问题的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


当前文章:Javascript中this关键字指向问题的示例分析
当前地址:http://myzitong.com/article/jidjso.html