如何理解 JavaScript 中的 this 关键字
2个回答
2016-04-18 · 知道合伙人互联网行家
护肤达人IT宅族
知道合伙人互联网行家
向TA提问 私信TA
知道合伙人互联网行家
采纳数:5637
获赞数:17441
毕业于曲阜师范大学,学士学位。互联网行业2年从业经验,读过SEO相关书籍。现任爱家网SEO优化专员。
向TA提问 私信TA
关注
展开全部
方法/步骤
在编程语言里,同样也有“我”的概念,那就是this关键字。每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义的来决定的,而是由谁来执行的决定的。这是判断this关键表示什么的重要原则。比如:
张三.吃饭();//这个吃饭里的this就是张三这个对象
也就是判断点(.)前面的对象是谁,那这个this就是谁。
但有的方法是直接执行的,前面没有点,就更没有执行的对象了,那this关键是谁呢?像alert方法,直接执行的,那alert方法里的this是谁呢?凡是可以象alert这样直接运行的方法,都是全局方法(全局方法叫函数),全局方法的执行,都相当于前面省略掉了window.,也就是说alert()相当于window.alert(),那这样直接运行的方法里的this关键字,肯定就是window了。
2
² 再强调一次:方法里的this表示的是那个对象,是由谁来执行决定的。和在那儿定义的没有关系。
补充:this表示的对象,是这个方法活动的“上下文”。“上下文”是那些计算机前辈在翻译这个词的时候,脑子抽了一下,就把context翻译成这么一个中国人看不懂的新词汇了。所谓的“上下文”, 也就是表示当前的这些代码的活动范围,当前的活动(代码的执行)在那个对象上发生的意思。吃饭这个活动,是在张三这个对象上发生的,则张三是吃饭的上下文。在body里去查找所有的div元素,则body是这个查找活动的上下文。那这个this,就是这个方法运行的活动范围了。
方法里this当前这个方法运行的上下文,但上下文不仅限于this(就是个体与整体的区别)。
第二种风格的this关键字解释
this关键字
每一个方法或函数都会有一个this对象,this对象是方法(或函数)在执行时的那个环境,也可以说是这个函数在那个作用域下运行的。
说的更通俗一点:this就相当于咱们平时说话时候说的“我”,“我家”的概念。就是说当一个方法在运行的时候,它是属于谁的。它在运行的时候它的家是谁家。
this的概念比较抽象,是讲课的时候的难点也是重点。
关于this的具体表示那个对象,和函数的运行方式(或调用方式)有关。在JavaScript中一共有四种调用模式:方法调用模式(对象属性模式)、函数调用模式(就是普通的函数执行)、构造调用模式(应该叫实例上的方法模式更好)和apply调用模式。
在编程语言里,同样也有“我”的概念,那就是this关键字。每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义的来决定的,而是由谁来执行的决定的。这是判断this关键表示什么的重要原则。比如:
张三.吃饭();//这个吃饭里的this就是张三这个对象
也就是判断点(.)前面的对象是谁,那这个this就是谁。
但有的方法是直接执行的,前面没有点,就更没有执行的对象了,那this关键是谁呢?像alert方法,直接执行的,那alert方法里的this是谁呢?凡是可以象alert这样直接运行的方法,都是全局方法(全局方法叫函数),全局方法的执行,都相当于前面省略掉了window.,也就是说alert()相当于window.alert(),那这样直接运行的方法里的this关键字,肯定就是window了。
2
² 再强调一次:方法里的this表示的是那个对象,是由谁来执行决定的。和在那儿定义的没有关系。
补充:this表示的对象,是这个方法活动的“上下文”。“上下文”是那些计算机前辈在翻译这个词的时候,脑子抽了一下,就把context翻译成这么一个中国人看不懂的新词汇了。所谓的“上下文”, 也就是表示当前的这些代码的活动范围,当前的活动(代码的执行)在那个对象上发生的意思。吃饭这个活动,是在张三这个对象上发生的,则张三是吃饭的上下文。在body里去查找所有的div元素,则body是这个查找活动的上下文。那这个this,就是这个方法运行的活动范围了。
方法里this当前这个方法运行的上下文,但上下文不仅限于this(就是个体与整体的区别)。
第二种风格的this关键字解释
this关键字
每一个方法或函数都会有一个this对象,this对象是方法(或函数)在执行时的那个环境,也可以说是这个函数在那个作用域下运行的。
说的更通俗一点:this就相当于咱们平时说话时候说的“我”,“我家”的概念。就是说当一个方法在运行的时候,它是属于谁的。它在运行的时候它的家是谁家。
this的概念比较抽象,是讲课的时候的难点也是重点。
关于this的具体表示那个对象,和函数的运行方式(或调用方式)有关。在JavaScript中一共有四种调用模式:方法调用模式(对象属性模式)、函数调用模式(就是普通的函数执行)、构造调用模式(应该叫实例上的方法模式更好)和apply调用模式。
2016-04-18 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
javascript 中的 this 有 五种情况:
1.全局范围:
它 会指向 全局对象( 浏览器下指window)
2.全局函数调用:
它 还是指向全局对象。
3.对象函数调用:
调用某个对象的函数, 它指向 当前对象。
4.使用 new 实例化对象时:
它指向 新创建的 对象。
5.调用某些方法时:
如: Function.prototype 上的 call 或者 apply 方法 以及 with等
它指向 传入的对象。
1.全局范围:
它 会指向 全局对象( 浏览器下指window)
2.全局函数调用:
它 还是指向全局对象。
3.对象函数调用:
调用某个对象的函数, 它指向 当前对象。
4.使用 new 实例化对象时:
它指向 新创建的 对象。
5.调用某些方法时:
如: Function.prototype 上的 call 或者 apply 方法 以及 with等
它指向 传入的对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询