1.在一般函数方法中使用 this 指代全局对象

function test(){this.x = 1;alert(this.x);}test(); // 1

2.作为对象方法调用,this 指代上级对象

function test(){alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1

3.作为构造函数调用,this 指代new 出的对象

  function test(){this.x = 1;}var o = new test();alert(o.x); // 1//运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:var x = 2;function test(){this.x = 1;}var o = new test();alert(x); //2

4.apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数

  var x = 0;function test(){alert(this.x);}var o={};o.x = 1;o.m = test;o.m.apply(); //0
//apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。如果把最后一行代码修改为
o.m.apply(o); //1

转载于:https://www.cnblogs.com/pabitel/p/5922511.html

JS中this的四种用法相关推荐

  1. js中继承的几种用法总结(apply,call,prototype)

    本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(proto ...

  2. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出"欢迎下次光临" 在网页中弹出框输入1   网页输 ...

  3. Js中自定义对象四种方式

    Js中自定义对象四种方式 1 类似JAVA有参构造方式: 1.定义对象: function 对象(属性[age]){追加属性:如(this.age = age)[this代表当前对象的地址值的引用]追 ...

  4. Java中switch的四种用法

    总共有四种不同形式的switch.两种是switch语句,两种是switch表达式,表达式会生成一个值.switch表达式没有"直通式"行为. 表达式,无直通行为 int numL ...

  5. JS中对象的四种继承方式:class继承、原型链继承、构造函数继承、组合继承(构造函数和原型链继承的结合)

    前言 才发现之前没有对JavaScript中的继承做过总结,不过看得到是不少,接下来就对这几种继承方式做一下总结. class继承 class继承是ES6引入的标准的继承方式. ES6引入了class ...

  6. js学习总结----js中常用的四种输出方式

    1.alert('内容') 在浏览器中弹出框显示我们的内容    不输入内容弹出undefined  (注意alert弹出的都是字符串) 2.document.write('内容')  在页面中输出显 ...

  7. Python正则表达式中问号的四种用法

    1.原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,? 2.有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. 3.(非)贪婪匹配 贪婪匹配 ...

  8. 第22篇 js中的this指针的用法

    前面把js的相关知识总结了下,今天把js中的上下文的this,对于强类型语言,this的用法非常的单一,因为他们没有js特有的动态绑定. 首先看下面代码: function funcA() {this ...

  9. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

最新文章

  1. 判断两条线段是否相交
  2. 【视频】vue指令之@click及其stop修饰符
  3. ContextLoaderListener的用途以及配置方式
  4. CDC之CreateCompatibleDC与BitBlt
  5. vue3 线上环境 ctx 无法识别
  6. 后端根据百度地图真实路径距离_百度地图开放平台介绍--路线规划
  7. KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
  8. myeclipse+tomcat-热部署
  9. Wannafly交流赛1: B. 白兔的式子(组合数)
  10. Mysql 中将blob类型转换成varchar类型
  11. android中include标签使用详解
  12. E-BOM和M-BOM的区别
  13. html实现背景图片自动更换,HTML实现背景图片的替换
  14. 智在未来,明年再聚--OFweek2018(第三届)中国高科技产业大会完美闭幕!
  15. [案例4-6]研究生薪资管理
  16. Word 题注重新编号
  17. .fire勒索病毒如何删除 .fire后缀文件恢复(Dharma)
  18. 如何高效建设传奇的DAO
  19. 【矩阵乘】【DP】【codevs 1305】Freda的道路
  20. SQL SERVER IO request 超时

热门文章

  1. Android去掉listView,gridView等系统自带阴影
  2. DDOS的攻击原理和防护指南
  3. 人的幸福感取决于什么
  4. win8 软件字体乱码
  5. Hibernate读书笔记
  6. php课程 4-15 数组遍历、超全局数组、表单提交数据(多看学习视频)
  7. Apache日志记录组件Log4j出现反序列化漏洞 黑客可以执行任意代码 所有2.x版本均受影响...
  8. ASP.NET Core 2加入了Razor页面特性
  9. Linux(Fedora21)安装google chrome浏览器
  10. Linux系统日志及日志分析