JS中this的指向
JS中this的指向,this是js中的一个关键字
1.this的指向有这四种情况
1. 在普通的函数中,this指向全局对象window
2.在构造函数中,this指向创造出来的实例
3.对象的方法里面调用,this指向调用者
4. 在函数中,严格模式下,this 是 undefined
// 普通方法中
function bar () {console.log(this) // this指向的是window
}
bar()
// 构造函数中
function Animal() {this.name = 'zzz',this.sayName = function () {console.log(this) // 指向的是a实例}
}
var a = new Animal()
a.sayName()
// 对象方法
var obj = {name: '张三',fullName: function () {console.log(this.name)}
}obj.fullName() // 这的this指向 obj这个对象
// 函数严格模式下
<script type="text/javascript">'use strict'function a () {console.log(this)}a() // undefined
</script>
2.改变this的指向
- apply() apply(thisScope, [arg1, arg2, arg3…]) 只接收两个参数,
- call() call(thisScope, arg1, arg2, arg3…) 接收多个参数
- bind() bind(thisScope, arg1, arg2, arg3…) 接收多个参数,返回一个函数。在这个新函数中,this将永久地被绑定到了bind的第一个参数,无论这个函数是如何被调用的。
第一个参数‘this’使用对象,后续参数作为参数传递给函数使用
// call 和 apply
function add (b, c) {return this.a + b + c
}
var o = {a: 1};
console.log(add.apply(o, [4, 5])) // 1+4+5 = 10
console.log(add.call(o, 4, 7)) // 1+4+7 = 12
// g使用bind绑定后,再重新对新函数g绑定,bind只会生效第一次绑定的
function add (b, c) {return this.a + b + c
}
var g = add.bind({a: 1}, 1, 2) // 4
console.log(g())var c = g.bind({a: 10}, 1, 11) // 4
console.log(c())
JS中this的指向相关推荐
- 理解js中this的指向
彻底理解js中this的指向 JavaScript 的 this 指向问题深度解析 转载于:https://www.cnblogs.com/jeacy/p/6509616.html
- 简述JS中THIS的指向?
这里是修真院前端小课堂,每篇分享文从 八个方面深度解析前端知识/技能,本篇分享的是: [简述JS中THIS的指向?] 大家好,我是IT修真院武汉分院web第16期的学员孟晨,一枚正直纯洁善良的web程 ...
- 彻底理解js中this的指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 随笔——js中的this指向,apply()与 call()
js中apply和Math.max()函数(原文) apply() Function.apply() 是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解: ...
- 理解js中的this指向以及call,apply,bind方法
<script> function a(){var user = "追梦子";console.log(this.user); //undefinedconsole.lo ...
- JS中this的指向与改变this指向的三个方法
目录 一.this指向的分类 1.全局函数的调用 2.对象中函数的调用 3.setTimeout与setInterval中的this 4.事件绑定中的this 5.箭头函数中的this 6.构造函数中 ...
- JS 中 this 的指向
为什么要使用this? 解决的问题? 可以先通过一个例子了解下 function speak(){var name = this.nameconsole.log("Hello I am -- ...
- js中this的指向问题
JS 面试题: var obj = { foo: function(){ console.log(this) } } var bar = obj.foo obj.foo() // 打印出的 this ...
- js中的 this指向面试题
在普通函数中this指向window function test(){this.x=1;console.log(this); //window }; test(); 在对象下的this指向是对象本身, ...
最新文章
- 查找(三)——基于平衡二叉树的查找(对排序二叉树的改进)
- redis中的intset
- 风靡全网的H5究竟是什么?
- Spark 数据挖掘 - 利用决策树预测森林覆盖类型
- 更新pcb封装导入_PCB设计│网表导入的雷区,你还在踩?
- 前端开发:小程序--第一步
- 数组填充php,php数组入门教程之数组填充
- C++:获取图片文件信息-图片名称、类型、像素宽高
- Django开发微信公众平台
- 分布式监控系统ganglia配置文档
- C++基础部分_C++文件操作_文件的读取操作---C++语言工作笔记077
- 扩展 HashMap
- Bagging Classifier+Regressor
- java 百度地图返回坐标_Java使用百度地图API,根据地址,查询地址坐标。
- WES7@IIC-China
- 用神经网络分类根号2与根号x的数据汇总
- idea创建Springboot项目时,出现Error:java: 读取C:\Users\HP\.m2\repository\com\vaadin\external\google\android-js
- Module not found: Error: Can‘t resolve ‘core-js/fn/promise‘
- Unity3d程序必备的几种设计模式
- 【附源码】计算机毕业设计JAVA自动化办公系统