this 代表了当前的对象,哪个对象调用了this所在的函数,this就代表了哪个对象;

例1:

  1. function fn(){
  2. var a = 1;
  3. console.log(this)
  4. }
  5. fn()

控制台打印结果: Window {window: Window, self: Window, document: document, name: '', location: Location, …}

此时,是Window对象调用了fn这个函数,所以this指向了Window。

例2:

  1. var obj = {
  2. b : 2,
  3. name : "lili",
  4. fn:function(){ var a = 3; console.log(this); } }
  5. obj.fn()

控制台打印结果: {b: 2, name: 'lili', fn: ƒ}

此时是obj对象调用了函数fn,因此this指向了obj,控制台返回的是obj整个对象。

例3:

  1. var obj2={fn:function(){console.log(this,1111)}}
  2. var arr=[]
  3. arr[0]=100
  4. arr[1]=obj2.fn
  5.  
  6. console.log(arr[1])//window obj2
  7. arr[1]()
  8. obj2["fn"]()

打印结果:

调用者是arr时,this就指向了arr;

调用者是obj2时,this就指向了obj2。

例4:

  1. var obj = {
  2. name: "father",
  3. son: {
  4. name: "son",
  5. say: function () {
  6. console.log(this)
  7. }
  8. }
  9. }
  10. obj.son.say() //调用者时obj.son
  11.  
  12. var a = obj.son.say
  13. a(); //调用者是window
  14. var arr = [a]
  15. arr[0](); //调用者是arr

结果:

例5:

找到函数的真正调用者

  1. var obj = {
  2. name: "karen",
  3. say: function () {
  4. console.log(this) //obj
  5. function fn(a) {
  6. console.log(a, this) //obj winodw
  7. }
  8. fn(this) //fn(obj)
  9. }
  10. }
  11. obj.say() //obj
  12.  
  13. fn() // window
  14. obj.fn() //obj
  15. obj.xx.xx2() //obj.xx
  16. (function () {})() //window
  17. fn()() //window
  18. fn()[1]() // fn()返回的数组
this只需要看离最近(嵌套)的function的这个单词的调用者。
 
  1. var name = 'lili';
  2. var obj = {
  3. name: 'fa',
  4. prop: {
  5. name: 'sn',
  6. getname: function () {
  7. return this.name;
  8. }
  9. }
  10. };
  11. console.log(obj.prop.getname()); //调用者是obj.prop; sn
  12. var test = obj.prop.getname; //在window环境下定义的test;
  13. console.log(test()); //调用者是window; lili;

  1. var name = "lili";
  2. var obj = {
  3. name: "karen",
  4. fn: function () {
  5. console.log(this.name)
  6. }
  7. }
  8. var a = obj.fn
  9. a() //window; lili

JS:this关键字1的更多相关文章

  1. js 中关键字 this的用法

    <1>  js中this 的用法?  (key:函数是由调用的,四种情况标红可知) (http://www.ruanyifeng.com/blog/2010/04/using_this_k ...

  2. js基础 1.简单js 语法 关键字 保留字 变量

    简单js JavaScript 是一个松散性的语言 对象属性却不想c中的结构体或者c++ 和java的对象, 对象继承机制 使用原型的prototype(原型链),js的分为三部分ECMAScript ...

  3. day1——js方法关键字的问题(onclick点了没反应)

    <a href="javascript:void(0);"   onclick="search();" >提交</a> js代码: fu ...

  4. js常用关键字和函数

    document.createElement("div"): 创建一个div元素申明一个变量 document.body.appendChild(div);   将创建好的div添 ...

  5. js 查找关键字

    查找:4种: 1. 查找固定关键字,仅返回位置,可指定开始位置: var i=str.indexOf("kword"[,starti]); str.lastIndexOf(&quo ...

  6. JavaScript高级程序设计(五): js的关键字instanceof和typeof使用

    JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...

  7. ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字

    有很多网站读者能换自己喜欢的样式,还有一些网站想多站点共享后端代码而只动前段样式,可以采用动态替换CSS样式和JS. 如果是webform 开发,可以用下列方法: 流程是首先从数据中或者xml读取数据 ...

  8. [js]this关键字代表当前执行的主体

    点前是谁,this就是谁 <div id="div1" class="div1"></div> <div id="div ...

  9. js new关键字

    实现new 关键字只需4步 1. 声明一个对象: 2. 把这个对象的__proto__ 指向构造函数的 prototype; 3. 以构造函数为上下文执行这个对象: 4. 返回这个对象. 简洁的代码示 ...

  10. JS的关键字this

    1.关于this this关键字是JavaScript中最复杂的机制之一.它是一个很特别的关键字,被自动定义在所有函数的作用域中. 1.1 为什么要用this? this提供了一种更优雅的方式来隐式地 ...

随机推荐

  1. Linux磁盘分区fdisk命令操作(简洁版)

    实例(环境为: CentOS Linux release 7.2.1511 (Core), 3.10.0-327.el7.x86_64) 选择要具体操作的第二块磁盘(linux下一切是文件形式对应): ...

  2. Servlet 标准下载地址

    Servlet 标准下载地址 java 技术标准开发社区 https://jcp.org/ 3.0 https://jcp.org/aboutJava/communityprocess/mrel/js ...

  3. 使用IntelliJ IDEA创建Java项目

    准备: Intelliyu IDEA 下载好JDK1.8 方法一: 方法二

  4. 一款开源的文件搜索神器,终于不用记 find 命令了

    这是 HelloGitHub 推出的<讲解开源项目>系列,用一篇文章带你快速上手有趣的开源项目. 今天给大家推荐一个好用+开源的文件搜索工具--fd 该工具支持大多数主流操作系统,快来更新 ...

  5. 阶段性总结linux(1)

    学习安装linux系统 [网络连接方式] 桥接 ,好比所有人都在25期教室,公用这个教室的局域网段 192.168.11.0~192.168.11.255 教室内有60个同学,插上了网线,所有人都是 ...

  6. 如何使用 pyqt 实现 Groove 音乐播放器

    前言 Win10 自带了一款很好用的音乐播放器 -- Groove 音乐,但是只能支持本地音乐的播放.2020年3月底到4月底,自己一直在学习 PyQt5,然后从 2020年5月开始,着手使用 PyQ ...

  7. 聊聊redis的主从复制吧

    聊聊基础概念 主从复制与主从替换 主从复制不同于主从替换,主从复制是正常情况下主节点同步数据到从节点:主从替换是主节点挂了之后,把从节点替换为主节点: 从节点存在的意义:备份主节点数据+负载均衡(对外 ...

  8. Python常用数据结构-字典——2.1 字典方法 keys()

    python字典常用方法: keys()               #  获取所有的键 values()            #  获取所有的值 items()              #  获 ...

  9. ChCore Lab2 内存管理 实验笔记

    本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第二篇.所有章节的笔记可在此处查看:chcore | 康宇PL's Blo ...

  10. NLP教程(3) | 神经网络与反向传播

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...