| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JavaScript高级 |彻底搞清this指向问题 -> 正文阅读 |
|
[JavaScript知识库]JavaScript高级 |彻底搞清this指向问题 |
this指向问题this 指向问题 一般情况下 this 的最终指向是那个调用它的对象。 ①在全局作用域下或者普通函数中 this 指向全局对象window,包括定时器。 因为在全局作用域下,变量和函数都是window的属性或者方法,所以也就是说他们的调用者就是 window。
②方法调用中:谁调用this就指向谁。 调用对象o里面的方法 this指向对象o
调用 btn 按钮对象 this 指向的是 btn
③构造函数中this指向构造函数中的实例。 在构造函数里调用this 指向的是 Fun的实例对象 fun
this 绑定规则默认绑定**独立函数调用都是指向 window **
window是它的绑定对象
在 ②这种情况中 虽然函数定义在了对象里面,但还是被单独调用,所以此时this 的绑定对象 仍是 window
一般打包工具会自动将js文件设置成 严格模式,这样可以规避一些低级错误。
总结:
隐式绑定通过某个对象进行调用,即调用位置是某个对象发起的函数调用。 前提:必须在调用的对象内部有一个函数的引用,(比如一个属性) 简单来说就是:将函数赋值给了对象的某个属性,然后通过调用对象的这个属性的方式调用函数就是隐式绑定
显式绑定与隐式绑定不同,显式绑定是通过call()等方法调用自己指定好的this指向的函数。
实现显式绑定的两个方法
apply()语法:
call()语法:
总结:第一个函数是相同的,参数均为this所需要指定的对象,后面的参数,apply为数组,call为参数列表. bind()我们发现 如果我们想多次调用指定好this指向的函数时都需要调用 apply或者 call。
有没有什么方法可以一劳永逸呢?
bind方法创建的新的绑定函数(EF)是一个怪异函数对象 new绑定JavaScript 中的函数可以当做一个类的构造函数来使用,也就是new关键字。
内置函数的绑定思考有时候,我们会调用一些JavaScript的内置函数,或者一些第三方库中的内置函数。
需要依靠 绑定优先级
this 指向 :“aaa”
总结:new>bind>call=apply>默认绑定。 完结散花ok以上就是对 JS高级篇 |彻底搞清this指向问题 的全部讲解啦,很感谢你能看到这儿。如果有遗漏、错误或者有更加通俗易懂的讲解,欢迎小伙伴私信我,我后期再补充完善。 参考文献coderwhy老师JS高级视频教程 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:38:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |