一.函数调用

// this 指代全局对象(window)
function test(){this.x = 1;
   alert(this.x);
}
test(); // 1

二.方法调用

// 作为对象方法调用,this 指代上级对象
function test(){  alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1

三.构造函数模式

// 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

四.apply/call调用(函数上下文)

上下文模式中this的指向和前三种模式不一样,它的this指向可以改变,而前三种模式是固定。
apply和call第一个参数:表示使用那个对象来调用函数;
apply第二个参数:是一个数组或伪数组,数组的值做为函数的参数被传入;
call第二个参数是:是基本数据类型(number string boolean);

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

通过call和apply可以重新定义函数的执行环境,即this的指向,这对于一些应用当中是十分常用的。

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

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

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

  2. tp5类的属性不存在_thinkPHP5.1框架中Request类四种调用方式示例

    本文实例讲述了thinkPHP5.1框架中Request类四种调用方式.分享给大家供大家参考,具体如下: 1. 传统调用 访问方式:http://127.0.0.1/demo/demo3/test?n ...

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

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

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

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

  5. JavaScript中函数的四种调用方式(若有错误之处请斧正)

    函数的几种调用方式 一.一般形式函数的直接调用 fun(); 二.作为对象的方法调用 var obj = {name:"123",sayMyage:function(age){al ...

  6. object取值_this的原理、函数的不同调用方式this取值、以及不同环境下this的取值、函数四种调用方法...

    一.this的原理 1.1问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果 var obj = {foo: function () {} };var fo ...

  7. JS中深拷贝的几种实现方法

    概念 首先,我们需要简单了解什么是深拷贝,什么是浅拷贝. 深拷贝:拷贝的是对象或者数组内部数据的实体,重新开辟了内存空间存储数据: 浅拷贝:拷贝的是引用类型的指针,副本和原数组或对象指向同一个内存: ...

  8. Python 中浅拷贝的四种实现方法

    方式一:使用切片 [:] 列表 # 浅拷贝 [:] old_list = [1, 2, [3, 4]] new_list = old_list[:]old_list.append(5) old_lis ...

  9. [Vue.js]跨域访问四种解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 报错: has been blocked by CORS policy: Response to preflight requ ...

  10. JS中this的四种用法

    1.在一般函数方法中使用 this 指代全局对象 function test(){this.x = 1;alert(this.x);}test(); // 1 2.作为对象方法调用,this 指代上级 ...

最新文章

  1. 磨刀不误砍柴工!vs2010快捷键大全
  2. Securing Session State
  3. 后端开发必知必学的 Linux 命令行大全
  4. 【小假期】反思与计划。6.9-6.10
  5. ECCV2020 收录论文汇总(持续更新中)附打包下载
  6. VTK:模型之DelaunayMesh
  7. Windows 2008 IIS7.5中创建独立账号的FTP站点图文教程
  8. c#获取autocad安装位置_AutoCAD自动切换输入法插件
  9. SAP ui5 sap.ui.getCore().getUIArea
  10. Python __getattr__和__setattr__方法介绍
  11. python下载哪个版本好-Python下载哪个版本比较好?
  12. linux下载win软件,Linux大神都知道的下载工具,其实Windows平台也能用
  13. 我用Anylogic写了一个遗传算法
  14. android 程序控制开关飞行模式,android开关飞行模式的方法
  15. git pull时候报错443
  16. 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例
  17. 歌词制作软件C#实现
  18. Cadence 16.6 Allegro中如何设置多层板的每一层的单端信号的线宽以保证50Ω阻抗?
  19. 2022河南萌新联赛第(二)场:河南理工大学 C - 斩龙
  20. 【LaTex】基础语法框架快速入门教程——Tex live+TexStudio简要安装及使用教程

热门文章

  1. WebRTC之视频采集
  2. Schema hasn't been registered for model 解决方案
  3. mysql不等于多个数怎么写_mysql不等于符号怎么写
  4. C语言---内存操作及基础知识
  5. linux安装有道词典步骤,Ubuntu 16.04安装有道词典的方法
  6. 扫码关注公众号登陆网站
  7. 思科笔记-Four,ospf协议实现全网互通,spf算法,简短总结篇
  8. 竞争情报的网络信息源
  9. 记一次springboot应用偶发502错误的排查过程
  10. 代购类网站商品高清晰大图片(1000x1000)的采集解决方案 - hackercai - 博客园