最近在学习js,看了关于this关键字,感觉水有点深,所以在网上查了很多的关于this关键字的解释说明,在此处总结一下:

1.普通函数中的this关键字,因为普通函数的拥有者是window对象,所以此处的this代表window对象,如下例:

1 var test = function(){
2             this.name = "john"
3         }
4         test();
5         alert(window.name);

解释:因为普通函数的拥有者是window对象,所以此处的this代指window,执行此段代码,将弹出john。

2.对象中的函数中的this,因为对象拥有这个函数,所以这里的this代表该对象,如下例:

1 var obj = {
2             name: "Smith",
3             sayHi: function(){
4                         alert(this.name);
5                     }
6         };
7         obj.sayHi();

此段代码执行,将弹出Smith。

3. 对象中一个函数嵌套的问题,如下代码示例:

 1 var obj = {
 2             name: "Smith",
 3             sayHi: function(){
 4                         setTimeout(
 5                                 function(){
 6                                     alert(this.name);
 7                                 },
 8                                 2000);
 9                         }
10         };
11         obj.sayHi();

在示例代码中,此处却不能再弹出Smith,原因何在呢,根据我的理解,虽然sayHi函数属于obj对象,但是当调用obj对象的sayHi方法后,此函数又调用了setTimeout函数,而该函数有调用了一个匿名函数,前面已经说过,每个函数均属于window对象,所以此次setTimeout对象调用的这个匿名函数中的this代指window对象,而window对象不存在name这个属性,故不能弹出Smith

总结:在函数中使用this时,关键在于找到这个函数的拥有者,找到这个函数的拥有者即可马上了解函数中的this关键字的含义,同时也需明白函数是在被拷贝(copy)还是在调用这个函数(call)。

在dom模型下关于this的举例,我就不再赘述了,网上有很多资料,其实原理就一句话----this关键字用于引用当前对象。

转载于:https://www.cnblogs.com/binger/archive/2012/07/13/2590158.html

关于js中的this关键字相关推荐

  1. js中的this关键字

    this关键字之三板斧 1.第一板斧--this的原则 this代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.随着函数使用场合的不同,this的值会发生变化.但是有一个原则是不变的:th ...

  2. Js中的const关键字

    const关键字 和 let 关键字一样都是有块级作用域. const声明一个只读的常量.一旦声明,常量的值就不能改变.一旦声明变量,就必须立即初始化,不能留到以后赋值. const foo; // ...

  3. 简单记录js中的this关键字

    1.this只会指向调用this所在函数的上一级对象,而不会上两级: 2.this永远指向的是最后调用它的对象(赋值的情况不是调用执行): 3.new关键字可以改变this的指向,将这个this指向对 ...

  4. js中for(i in array)和for(i=0;i<array.length;i++)之间的坑

    前情提要 刚刚接触到js写for循环的时候,觉得for(i in array)这种格式简直是非常直观,比三段论的for循环好写得多.直到遇到了一个坑,事情是这样的: 最开始的网页中,鉴于方便,清一色使 ...

  5. JS中this的指向

    JS中this的指向,this是js中的一个关键字 1.this的指向有这四种情况 1. 在普通的函数中,this指向全局对象window 2.在构造函数中,this指向创造出来的实例 3.对象的方法 ...

  6. 深入理解JS中this关键字

    为什么要使用this关键字 看个例子 function indetify() {retun this.name.toUpperCase()}var obj = {name: 'zz'}indetify ...

  7. JS中this关键字

    JS中this关键字 this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. 1.全局代码中的this a ...

  8. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  9. js中的关键字总结呢

    1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...

  10. JS中关键字in的作用

    JS中关键字in的作用 in关键字可以用来检测某个属性是否存在某个对象中,对于对象的属性要用字符串指定属性的名称("属性名") // 举个栗子:console.log(" ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(8月15日-8月19日)
  2. 采购部管理--餐饮原料的验收管理
  3. 104. Leetcode 337. 打家劫舍 III (动态规划-打家劫舍)
  4. 这些IT圈里的名词,你读对了吗
  5. 带缓冲的IO和不带缓冲的IO
  6. VTK:PolyData之CellLocator
  7. JSP中 request.getRealPath(/xx/yy) 方法提示已经过时的替代方法
  8. ie6 z-index bug
  9. sqlsession.selectlist 会返回null么_StackOverflow经典问题:代码中如何去掉烦人的“!=nullquot;判空语句...
  10. java异常处理机简答题,【简答题】JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义?...
  11. Python学习---面向对象的学习[深入]
  12. 线条边框简笔画图片大全_简笔画猪 手抄报图片边框版式大全
  13. 提取Python stringlib中的BMHBNFS字符串查找算法
  14. 项目进度计划检查方法与项目进度管理相关模版表单(干货+资料)
  15. 解决智慧树考试酷无法复制粘粘的问题
  16. 简述一下原型 / 构造函数 / 实例
  17. 机器学习实战(一):K-近邻算法(史上最全干货) 算法总结+案例实战
  18. 什么是URL?URL是什么意思?
  19. 宽带拨号常见错误代码解析及故障排查
  20. A-Level经济真题(7)

热门文章

  1. MacBooster如何查找和清理Mac大文件和旧文件?
  2. Wondershare DVD Creator mac版如何刻录光盘文件
  3. 毕业设计第一周的计划
  4. 简单设置让Win7不等更新直接关机
  5. div+css 英文或数字自动换行
  6. Windows环境下安装python+tensorflow
  7. 一个悄然成为世界最流行的操作系统
  8. 宝贝,后端接口如何提高性能?
  9. 面试官:设计一个安全的登录都要考虑哪些?我一脸懵逼。。
  10. 全中国加油:Github 开源了新型肺炎防疫项目,一起助力