
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
1、函数原型链
JS是一种基于对象的语言,但在 ES6 之前是不支持继承的,为了具备继承的能力,JavaScript 在函数对象上建立了原型对象 prototype,并以函数对象为主线,从上至下,在JS内部构建了一条原型链。原型链把一个个独立的对象联系在一起,Object 则是所有对象的祖宗, 任何对象所建立的原型链最终都指向了 Object,并以 Object 终结。
简单来说,就是建立了变量查找机制,当访问一个对象的属性时,先查找对象本身是否存在,如果不存在就去该对象所在的原型连上去找,直到 Object 对象为止,如果都没有找到该属性才会返回 undefined。因此,我们可以通过原型链来实现继承机制。关于函数原型链请参考:认识原型对象和原型链
2、函数作用域
函数作用域就是变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。通俗来讲就是,在一个函数里,有些变量可以访问,有些不可以访问。那些能访问的变量所形成的范围,就是这个函数的作用域。
在 JavaScript 中,没有块级作用域,只有函数作用域,也就是说 if、while、for 语句不会形成独立的作用域。但有一个特殊情况,即 with 语句和 catch 语句会形成临时作用域,语句执行结束后,该作用域就会被释放。