this指向
this:一般函数执行时所在环境 (作用域)
1.函数在全局的时候,this指向window
2.当一个函数当做一个对象方法来调用的时候,this指向这个对象
3.通过事件来调任函数的时候,this指向函数的调用者
4.在构造函数中this,指向它实例化对象
作用域
1、全局作用域:定义在函数体外()的所有变量所在的环境
2、局部作用域:定义在函数体内的所有变量所在的环境
3、块级作用域(es6,let):定义在大括号里面的所欲在变量所在的环境
JavaScript如何实现继承
js是通过原型链来继承的,所以构成函数都有一个prototype属性来指向它的原型对象,这个原型对象上的方法或属性都是共享的
闭包
闭包是指一个函数可以访问另一个函数中变量,
常见的形式 : 函数里面嵌套函数
闭包缺点:
内存会增大内存的使用量 使用不当会造成内存泄露
详解:
(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
垃圾回收机制:(Garbage Collection)
1、首先给所有的变量或者对象添加一个标记
2、当变量进入环境(引用变量)的时候,上一步标记的内容清除掉
3、当变量离开环境(引用变量)的时候,再重新给这些变量添加上变量
4、这些重新添加上标记的变量或对象会回收到垃圾机制里面
5、js会周期性的清除垃圾回收机制里面所有对象或属性