一、this的常见判断:

  1.函数预编译过程 this —> window

  2.全局作用域里 this —> window

  3.call/apply 可以改变函数运行时this指向

  4.obj.func();   func()里面的this指向obj(即谁调用该函数,函数内this就指向谁)

二、this的常见用处:

  1、自定义构造函数中:

   

  function A(){this.name = 'A';this.age = 18;}

  2、对象的函数定义中this指向该对象,可在该函数内通过this调用该对象的属性。

  

var obj = {name: 'lyl',sayName: function (){console.log(this.name); //lyl
        }}

  3、在原型链上定义方法:

  

Array.prototype.enique = function (){// this指的是调用该方法的数组}

  4、js定义事件时:

  

$Li.onclick = function(){// this指向该dom对象,  $Lithis.style.color = 'red';}

三、严格模式:

  es5非严格模式下, this默认指向window

  es5严格模式下,this初始默认为undefined,需要赋值,而且赋值为什么就是什么,赋值为undefined/null 也不例外

转载于:https://www.cnblogs.com/Walker-lyl/p/5592089.html

JS中的this好神奇,都把我弄晕了相关推荐

  1. 用js代码判断质数_在 JS 中判断,并不是都要用 ===

    我们知道现在的开发人员都使用 === 来代替 ==,为什么呢? 我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===. 这些都导致许多程序 ...

  2. vue中引用js_从JS中的内存管理说起 —— JS中的弱引用

    点击上方"蓝字"关注本公众号 写在前面 在所有的编程语言中,我们声明一个变量时,需要系统为我们分配一块内存.当我们不再需要这个变量时,需要将内存进行回收(这个过程称之为垃圾回收). ...

  3. JS中关于构造函数、原型链、prototype、constructor、instanceof、__proto__属性

    在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中引入 ...

  4. js 添加属性_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

    这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道, ...

  5. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  6. 详解JS中的Object

    详解 JS 中的 Object 从本质上看,Object 是一个构造函数,用于创建对象. 一.Object 构造函数的属性 在 Object 中声明的属性只有两个: Object.length -- ...

  7. js中的总结汇总(以后的都收集到这篇)

    点1:js中的比较字符串是否相等,js中是用"=="这个来判断是否相等,这点跟java中不一样,java中是.equals()这种方法. 在之前写的ajax的demo中,因为用了. ...

  8. js密码校验,8-30位满足大写英文字母,小写英文字母,数字,特殊字符中至少三类,并且都是半角字符

    js密码校验,8-30位满足大写英文字母,小写英文字母,数字,特殊字符中至少三类,并且都是半角字符 正则表达式:/^(?![a-zA-Z]+ ) ( ? ! [ A − Z 0 − 9 ] + )(? ...

  9. JS中__proto__和prototype都是什么?原型链继承解读

    首先要知道,prototype是函数才有的属性,__proto__是每个对象都有的属性 随后,先谈一下 1.什么是prototype? prototype对象是JS实现面向对象的一个重要机制. 在很早 ...

最新文章

  1. No changes detected
  2. WinAPI: GetSystemPowerStatus - 获取系统电源状态的信息
  3. 【转载保存】java四种线程池的使用
  4. 对话阿里云MVP裔隽跨界半生,不改赤子心
  5. 【 ORA-27102: out of memory处理】
  6. mybatis plus 插入生成id_Mybatis-Plus 3.3.0 发布,让你专注业务快速敏捷开发
  7. 开源非英文关键词编程语言
  8. 7.大数据架构详解:从数据获取到深度学习 --- 批处理技术
  9. 【转】Java的package和import机制
  10. Mybatis插入postgresql数据库中类型为UUID的字段
  11. TripAdvisor猫途鹰翻译志愿者线上任务评测
  12. JavaScript ,js基础
  13. 冯大辉(@Fenng):信息真正的意义(图灵访谈)
  14. Win10 安装 PySC2 环境 -- DeepMind联合战网开发的《星际争霸 II》强化学习环境
  15. 腾讯区块链首次发声:将做深做透场景
  16. Navicat Premium试用期
  17. socket网络编程常用的结构及函数小结
  18. java的套娃汇总(黑马程序员基础java总结)
  19. 基于QT实现的简单版控制台植物大战僵尸
  20. (转)使用Vernam(维尔南/弗纳姆)算法实现文件加密解密[C#]

热门文章

  1. Linux下查看文件和文件夹大小的df和du命令
  2. 使用vue的sync修饰符进行子父组件的数据绑定
  3. url的特殊字符编码 encodeURI编码
  4. React-Router面试题汇总
  5. [react] 描述下在react中无状态组件和有状态组件的区别是什么?
  6. react(94)--时间搜索传值规范
  7. [软技能] 你认为计算专业和非计算机专业的差别在哪?为什么?
  8. [css] 过渡和动画的区别是什么?
  9. 工作33:page值不能修改
  10. 前端学习(1560):ng-class颜色切换