| |
|
开发:
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指向,即this的四种绑定 -> 正文阅读 |
|
[JavaScript知识库]浅析JavaScript的this指向,即this的四种绑定 |
JavaScript的this指向有四种绑定规则,即: 1.默认绑定 2.隐式绑定 3.显示绑定 4.new调用绑定 默认绑定:即全局函数的this默认绑定到window
隐式绑定:即函数在上下文对象内则绑定到上下文对象上。下转隐式丢失对比理解
提一嘴隐式丢失:官方解释bar是对foo不加修饰的调用,因此丢失了obj的绑定。 我的理解就是,obj.foo在执行时,是通过obj对象查询到foo并进行了调用;而bar是将foo的指针取了出来,bar得到了foo的指针,因此bar()等同于foo();
显示绑定:即通过call、apply方法显示绑定this。
显示绑定没有解决隐式丢失问题,即foo的绑定还是丢失了。我们需要的是具有foo功能的函数,但是这个函数已经硬硬的绑定到了我们所给的对象上了。 显示绑定之硬绑定:硬硬的的绑定到我们所给的对象上,实际上就是多包裹了一层函数
bind的实现原理有部分类似于此 new调用绑定:构造调用,构造调用的函数会出现4种变化 ①创建(构造)一个全新的对象 ②这个对象会被直行[[Prototype]]链接 ③这个新对象会被绑定到函数调用的this ④如果函数没有返回其他对象,则new表达式中的函数调用会自动返回这个新对象 明确一点,new不是实例化类,而是调用一个新函数,只是和普通调用不同,这里是构造调用,详解见官网
四中绑定的优先级:new >?显示 > 隐式 >?默认绑定 |
|
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 4:38:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |