JavaScript-this指向问题
默认值
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指向问题相关推荐
- javascript this指向总结
javascript this指向总结 1.单独的this,指向的是window这个对象 alert(this) // this -> window 2.全局函数中的this function ...
- JavaScript this指向相关内容
1,默认绑定this指向windw对象 看代码: function test(C){ var a = 123 function b(){}; } 在预编译环节当中. OA{ arguments:[1] ...
- JavaScript - this指向以及强行改变this指向
this 指向 -官方:指当前代码执行的上下文环境(context) -私人: 就是一个使用在作用域内(全局 / 函数内)的关键字 全局作用域 this ->在全局作用域内,this就是wind ...
- js this指向哪里 JavaScript this指向
非箭头函数中的this指向一般都是调用者 在非箭头函数中 谁调用了函数,那么函数的this指向就是谁 比如 let obj1 = { name:'obj1', ...
- 前端面试题之JavaScript【this指向】
JavaScript this指向 全局环境下:this 始终指向全局对象(window), 无论是否严格模式 console.log(this.document === document); // ...
- 《你不知道的JavaScript》整理(五)——值与原生函数
一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 var a = 5E10; // 500000000 ...
- 在JavaScript中使用“原型”还是“ this”?
之间有什么区别 var A = function () {this.x = function () {//do something}; }; 和 var A = function () { }; A. ...
- 【一针见血】 JavaScript this
JavaScript this 指向一站式解决 转载于:https://www.cnblogs.com/xueyejinghong/p/8403987.html
- 四十个非常实用的轻量级JavaScript库
流行的JavaScript库,如jQuery, MooTools, Prototype, Dojo和YUI等,完成起常见的JavaScript任务来得心应手.这些JS库为客户端动作(events).动 ...
- js this指向分析
一.普通函数 1.this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁: 实际上this的最终指向的是那个调用它的对象 1 1) function a() { 2 ...
最新文章
- antlr-2.7.6.jar的作用
- TCP 拥塞窗口原理
- chrome麦克风权限_如何在Chrome扩展程序中处理麦克风输入权限和语音识别
- 北漂鱼引导页HTML源码
- java 文本变量_如何将一变量作为可配置文件 java
- Datawhale编程学习之数组和链表(1)
- FPGA实现FIR滤波器
- 阿里云语音合成1.0版
- XJOI一级五段题解(g++,即C++),也可视作C++算法竞赛教程
- 网络安全技术(第4版)复习资料整理
- 【支付】商业银行作为收单机构的银行卡支付流程
- 2020年正月初九 那个安检口的女子
- Python爬虫入门教程: 半次元COS图爬取
- 计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码
- 自定义安装office2019
- 华为scp快充协议详解_带有USB-C支持SCP的移动电源可以为华为手机提供SCP快充么?答案在这里...
- 一个计算机爱好者的不完整回忆(三十三)做过的软件
- 无法启动此程序因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll
- 学C++还是学Java?做软件研发还需掌握哪些知识和技能?
- 合并数组对象中相同的属性值