js中的this
来源:互联网 发布:.net域名代表什么 编辑:程序博客网 时间:2024/06/08 07:26
this的知识是js中比较重要的一环。不过总的来说,抓住根本,就会发现this得知识就会清晰明了。
this的本质是,首先this代表的是当前对象,一般在函数中使用,如果在全局使用就是window,如果在函数中使用,我们只要记住他核心的一点就行,那就是,哪个对象调用了这个函数,那么这个函数中this就是那个对象。不管这个函数被传了多少次,到达什么地方。
this的用法大概有几种。
第一种比较常用的就是对象里的,比如
var meizi = {
name: 'zym',
showName: function() {
console.log(this.name)
}
}
meizi.showName()//zym
第二种就是在setTimeout,事件处理或者ajax回调里使用this时,这种情况比较难一点。因为this会丢失,比如
setTimeout(meizi.showName,1000);//undefined
这种情况看起来以为会输出zym,比较我们是用meizi去调用的这个函数的,这里可以理解为meizi.showName是一个单纯的函数指针,到1秒后js引擎会执行这个指针指向的函数,而不会附带任何的数据信息,对于这种情况,解决方案有两种。
一种是bind,meizi.showName.bind(meizi),另一种是用另一个函数包装一下,function(){meizi.showName();}。
对于this的运用,学会结合bind,apply和call的使用时很重要的。bind和后两者的区别就是bind是绑定了相关的this和参数后返回一个新函数,而后两者是不仅绑定this和相关的参数,而且还会执行这个函数。可以理解为bind是延迟执行。
this的本质是,首先this代表的是当前对象,一般在函数中使用,如果在全局使用就是window,如果在函数中使用,我们只要记住他核心的一点就行,那就是,哪个对象调用了这个函数,那么这个函数中this就是那个对象。不管这个函数被传了多少次,到达什么地方。
this的用法大概有几种。
第一种比较常用的就是对象里的,比如
var meizi = {
name: 'zym',
showName: function() {
console.log(this.name)
}
}
meizi.showName()//zym
第二种就是在setTimeout,事件处理或者ajax回调里使用this时,这种情况比较难一点。因为this会丢失,比如
setTimeout(meizi.showName,1000);//undefined
这种情况看起来以为会输出zym,比较我们是用meizi去调用的这个函数的,这里可以理解为meizi.showName是一个单纯的函数指针,到1秒后js引擎会执行这个指针指向的函数,而不会附带任何的数据信息,对于这种情况,解决方案有两种。
一种是bind,meizi.showName.bind(meizi),另一种是用另一个函数包装一下,function(){meizi.showName();}。
对于this的运用,学会结合bind,apply和call的使用时很重要的。bind和后两者的区别就是bind是绑定了相关的this和参数后返回一个新函数,而后两者是不仅绑定this和相关的参数,而且还会执行这个函数。可以理解为bind是延迟执行。
0 0
- js中的this
- js中的this关键字
- 关于js 中的 this
- js中的this详解
- js 中的this
- JS中的this
- JS中的this用法
- js中的this基础
- JS中的this关键字
- 在js中的this
- 【JS】JavaScript中的this
- js中的this
- js 中的this
- js中的this
- JS中的this理解
- js中的this
- JS中的this
- js中的this指针
- CSDN Markdown Learning
- HDU 2588 GCD
- 微信小程序开发(一)之Hello World!
- scala基础3 —— 表达式和控制结构
- Unity3D自学笔记——脚本开发中的3D数学
- js中的this
- 网络编程
- C++实现格式化USB等设备
- docker 指定IP地址、与主机同网段IP
- Java-Review-Note——2.面向对象
- Gaussian Process
- 从零开始建站(三)--增强VPS的安全性
- 解决Android键盘弹出后,背景图挤压变形的问题
- HIVE 窗口及分析函数 应用场景