一、

1、es5:

  函数里的this指向分两种,一种正常函数调用指向被调用的对象,比如:

    test=()=>{
console.log(this)
};
test();//是当前window调用,所以this指向window。

  在事件调用里。this指向为当前调用时间的dom元素。

     //es5 this指向 调用时间的dom元素
btn.onclick=function () {
console.log(this)
}

2、es6:

es6 如上情况this指向为window。

     let btn=document.querySelector('.btn');
//es6 this指向是window
btn.addEventListener('click',(e)=>{
console.log(this);
});

二、

es5:

如何改变this指向呢?可以使用call方法和apply方法以及bind方法,这2个方法效果一致,只是传参类型不一样。

      function  fn1() {
console.log(arguments);
console.log(this)
}
fn1.call(document.body,,,,);//第一个参数为作用域 第二个是传递的参数值。多个以逗号隔开。
fn1.apply(document.body,[,,,]);//第一个参数为作用域,第二个参数为数组参数。
var newFn=fn1.bind(document.body,,);// 也是可以修改this指向,但是这个返回值是新的函数的副本,需要调用才能执行函数
newFn();

es6:无论是call方法还是apply方法 bind方法都无法改变this指向。

   fn=(...x)=>{//扩张运算符 可以将参数传的数组 转变成单个参数
console.log(x);//rest 语法 返回是一个数组
console.log(this)
};
fn.call(document.body,,);//第一个参数为作用域 第二个是传递的参数值。多个以逗号隔开。

js 函数的this指向的更多相关文章

  1. JavaScript函数实现鼠标指向后带图片的提示效果

    转载:http://www.cnblogs.com/jack86514/archive/2009/04/01/1427584.html 当我们在写一个网页程序的时候,很多方法可以提供页面的动态显示,从 ...

  2. js函数的作用域与this指向

    函数的作用域与this指向是js中很重要的一部分,理清这点东西需要个逻辑,看看我的逻辑怎么样... 下面是个提纲,可以直接挑你感兴趣的条目阅读. 函数的定义方式:直接定义(window下,内部定义), ...

  3. 深入理解JS函数中this指针的指向

    函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...

  4. Js函数function基础理解

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  5. 彻底理解js中this的指向,不必硬背。

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  6. 了解学习JS中this的指向

    [转] 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问 ...

  7. 理解js中this的指向

         学习自原文  http://www.cnblogs.com/pssp/p/5216085.html后的一点小结(原文作者总结的很棒^_^)! 关于js中this的指向,在函数定义的时候还无法 ...

  8. 彻底理解js中this的指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  9. js中this的指向

    在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧. JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式: 1. ...

随机推荐

  1. docker load tar.gz包失败解决方法

    执行docker load -i xxx.tar.gz时候报错 open /var/lib/docker/xxx No such file or directory 这种情况属于容器快照文件缺乏基础镜 ...

  2. jeecg 模糊查询

    1.前言 jeecg 考虑到默认模糊查询的话,会增加系统压力,导致查询慢,本来系统就挺那啥的... 2.方式一之实体赋值 实体重新赋值查询,用 * %% * 实现,我们知道 sql 中通常使用 % 去 ...

  3. 忘记树莓派pi账户密码简单重设

    网上搜到的教程多是要修改cmdline.txt,非常繁琐,其实树莓派本身的root账户还没有启用,在root账户下重设pi的密码是很容易的,下面教你启用root账户,一切都需要在树莓派本机上操作 打开 ...

  4. winform窗口关闭,进程没有关掉的解决办法

    /// <summary> /// 窗口关闭删除所有活动线程 /// </summary> /// <param name="sender">& ...

  5. 1 linux性能优化之平均负载uptime

    不知道onenote的笔记复制出来就是图片了...

  6. centos7双网卡绑定

    # 概念 服务器存在多块网卡时,可以通过bond来实现多块网卡并在一起使用: # 模式 mode 0:load balancing (round-robin) Support:需要Switch支持 & ...

  7. js中常用的获得日期对象的方法

    // 默认是当前时区的日期和时间 var date = new Date(); // 获取特定日期和时间的日期对象,需要传递毫秒数,不过可以传递规范日期格式字符串来代替 // 一些常见的日期格式 // ...

  8. 一文搞定Flask

    Flask 一 .Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收h ...

  9. go开发环境

    1.go 下载地址 https://studygolang.com/dl 根据操作系统 下载相应的安装包 2.设置环境变量 goroot gopath path 增加%goroot%\bin 3.开发 ...

  10. F1 相似查找字段存在的table

    REPORT ZME12_BDC1. *REPORT demo_select_dynamic_conditions . TABLES: makt,dd02t,marc. TYPE-POOLS : AB ...