百战程序员Web前端全栈工程师2023
JS是一种基于对象的语言,但在ES6 之前是不支持继承的,为了具备继承的能力,Javascript 在 函数对象
上建立了原型对象prototype,并以函数对象为主线,从上至下,在JS内部构建了一条 原型链 。原型链把一个个独立的对象联系在一起,Object
【附件笔记百度盘】
则是所有对象的祖宗, 任何对象所建立的原型链最终都指向了Object,并以 Object 终结。 ****
简单来说就是建立了变量查找机制,当访问一个对象的属性时,先查找对象本身是否存在,如果不存在就去该对象所在的原型连上去找,直到Object对象为止,如果都没有找到该属性才会返回undefined。因此,我们可以通过原型链来实现JS继承。
2、函数作用域
函数作用域就是变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。因此, JS中没有块级作用域,只有函数作用域
,这种设计导致JS中出现了 变量提升 的问题。简单来说就是,将变量声明提升到它所在作用域的最开始的部分,为了解决变量提升带来的副作用,ES6新增了
let 命令来声明变量,let 所声明的变量只在 let 命令所在的代码块内有效,所以不存在变量提升问题。
3、this 指针
this 指针存在于函数中,用以标识函