JS难点总结

本文深入探讨JavaScript中的关键概念,包括作用域(全局与函数作用域,块级作用域),this的指向(默认绑定、隐式绑定、硬绑定、构造函数绑定),原型对象与原型链,以及constructor构造函数。了解这些基础知识对于理解和优化JavaScript代码至关重要。
摘要由CSDN通过智能技术生成

JS作用域

作用域就是分为全局作用域和函数作用域,函数作用域只有function才算,if,while那些算是块级作用域,那些里面的变量到最后执行完会被提升为全局变量,还有在作用域里面,一个变量和函数的声明会被提到开头,比如就算在最后一行var一个a=5,也会被拆分成声明和赋值两步,声明的位置会被提升到当前作用域头部,函数也一样,但是函数的提升更领先于变量的声明。

JS this

function里面的this默认指向window,这是默认绑定。
写在对象里面的this默认指向这个对象,这是隐式绑定。
用bind或者call这类方法,强行将对象里面的函数this指向改变,this此时指向强行绑定的对象,这是硬绑定。
构造函数我也说不清楚,给你们看我看视频的截图自己理解
在这里插入图片描述
大概就是都是指向这个构造函数,这叫做构造函数绑定。
个人理解就是谁是这个函数的调用者,这个this就指向谁

JS原型对象

每一个构造函数都有一个prototype属性,它翻译过来就原型,原型的属性值是一个对象,所以也称为原型对象,一般我们会把函数的方法定义在这个原型对象上这样的话实例构造对象的时候,每个实例对象都可以共享这个原型对象上面方法,避免每个对象实例时都是为方法分配一个空间造成的内存资源浪费(如果这个方法直接定义在构造函数中的话)

JS对象原型

每个实例对象都会有一个属性__proto__,指向构造函数的prototype原型对象,也就是对象的__proto__和构造函数的prototype是===的,方法查找的规则:会现在对象自己身上找,如果没有,因为有__proto__存在,就会去构造函数的prototype上面找,有的话就用。个人的理解就是其实__proto__就是一条连接各个prototype的链子。

JS constructor构造函数

构造函数的prototype和实例对象的__proto__都有一个constructor属性
在这里插入图片描述
constructor指回构造函数本身,作用就是记录这个对象引用了哪个构造函数
在这里插入图片描述

JS 原型链

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值