默认值

1.1普通函数

谁调用指向谁,严格模式下没有调用者时 this 的值为 undefined

function fn() {console.log(this);}fn();//输出window

1.2箭头函数

箭头函数中的 this 与普通函数完全不同,也不受调用方式的影响,事实上箭头函数中并不存在 this !箭头函数中访问的 this 不过是箭头函数所在作用域的 this 变量。

 let sayHi = function () {console.log(this); // 该箭头函数中的 this 为函数声明环境中 this 一致};let user = {name: "小明",// 该箭头函数中的 this 为函数声明环境中 this 一致walk: () => {console.log(this);},sleep: function () {let str = "hello";console.log(this);let fn = () => {console.log(str);console.log(this); // 该箭头函数中的 this 与 sleep 中的 this 一致};// 调用箭头函数fn();},};// 动态添加方法user.sayHi = sayHi;// 函数调用user.sayHi();user.sleep();user.walk();

定义值

2.1 callcall(this,形参1,形参2...形参n)

  function sayHi() {console.log(this);}let user = {name: '小明',age: 18}let student = {name: '小红',age: 16,}// 调用函数并指定 this 的值sayHi.call(user); // this 值为 usersayHi.call(student); // this 值为 student

2.2 applyapply(this,[形参1,形参2...形参n])

function counter(x, y) {return x + y;}// 调用 counter 函数,并传入参数let result = counter.apply(null, [5, 10]);console.log(result);

2.3 bindcall(this,形参1,形参2...形参n)
bind 方法并不会调用函数,而是创建一个指定了 this 值的新函数,使用方法如下代码所示:

 // 普通函数function sayHi() {console.log(this);}let user = {name: '小明',age: 18}// 调用 bind 指定 this 的值let sayHello = sayHi.bind(user);// 调用使用 bind 创建的新函数sayHello();

JavaScript-this指向问题相关推荐

  1. javascript this指向总结

    javascript this指向总结 1.单独的this,指向的是window这个对象 alert(this) // this -> window 2.全局函数中的this function ...

  2. JavaScript this指向相关内容

    1,默认绑定this指向windw对象 看代码: function test(C){ var a = 123 function b(){}; } 在预编译环节当中. OA{ arguments:[1] ...

  3. JavaScript - this指向以及强行改变this指向

    this 指向 -官方:指当前代码执行的上下文环境(context) -私人: 就是一个使用在作用域内(全局 / 函数内)的关键字 全局作用域 this ->在全局作用域内,this就是wind ...

  4. js this指向哪里 JavaScript this指向

    非箭头函数中的this指向一般都是调用者 在非箭头函数中 谁调用了函数,那么函数的this指向就是谁 比如       let obj1 = {         name:'obj1',       ...

  5. 前端面试题之JavaScript【this指向】

    JavaScript this指向 全局环境下:this 始终指向全局对象(window), 无论是否严格模式 console.log(this.document === document); // ...

  6. 《你不知道的JavaScript》整理(五)——值与原生函数

    一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 var a = 5E10; // 500000000 ...

  7. 在JavaScript中使用“原型”还是“ this”?

    之间有什么区别 var A = function () {this.x = function () {//do something}; }; 和 var A = function () { }; A. ...

  8. 【一针见血】 JavaScript this

    JavaScript  this 指向一站式解决 转载于:https://www.cnblogs.com/xueyejinghong/p/8403987.html

  9. 四十个非常实用的轻量级JavaScript库

    流行的JavaScript库,如jQuery, MooTools, Prototype, Dojo和YUI等,完成起常见的JavaScript任务来得心应手.这些JS库为客户端动作(events).动 ...

  10. js this指向分析

    一.普通函数 1.this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁: 实际上this的最终指向的是那个调用它的对象 1 1) function a() { 2 ...

最新文章

  1. antlr-2.7.6.jar的作用
  2. TCP 拥塞窗口原理
  3. chrome麦克风权限_如何在Chrome扩展程序中处理麦克风输入权限和语音识别
  4. 北漂鱼引导页HTML源码
  5. java 文本变量_如何将一变量作为可配置文件 java
  6. Datawhale编程学习之数组和链表(1)
  7. FPGA实现FIR滤波器
  8. 阿里云语音合成1.0版
  9. XJOI一级五段题解(g++,即C++),也可视作C++算法竞赛教程
  10. 网络安全技术(第4版)复习资料整理
  11. 【支付】商业银行作为收单机构的银行卡支付流程
  12. 2020年正月初九 那个安检口的女子
  13. Python爬虫入门教程: 半次元COS图爬取
  14. 计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码
  15. 自定义安装office2019
  16. 华为scp快充协议详解_带有USB-C支持SCP的移动电源可以为华为手机提供SCP快充么?答案在这里...
  17. 一个计算机爱好者的不完整回忆(三十三)做过的软件
  18. 无法启动此程序因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll
  19. 学C++还是学Java?做软件研发还需掌握哪些知识和技能?
  20. 合并数组对象中相同的属性值

热门文章

  1. 如何远程断点调试本地localhost项目
  2. ssl介绍以及双向认证和单向认证原理
  3. NUC1840 Graveyard Design【尺取法】
  4. CCF NOI1145 数字金字塔【DP】
  5. CCF NOI1121 逆波兰表达式
  6. POJ NOI MATH-7831 计算星期几
  7. HDU2011 多项式求和【入门】
  8. 自定义 matplotlib 设置
  9. C++组合数(combination)的实现
  10. 面向对象 —— 类设计(十)—— 成员函数