标签:function 函数 继承 回收 Son Person 执行
继承
父类拥有属性及相关方法, 通过继承,子类也可以拥有(私有的不可能获取)
继承实现方式
1.ES6的extends关键词来实现继承(class)
class Person{ constructor( ){
this.name = '哈哈'; } } class Son extends Person{ constructor( ) { super( ) //指向父类的构造函数, 如果要使用this关键词
this.age = 18; } }
var son = new Son();
console.log(son.name);
2. 原型继承( 将对应的需要继承的对象加在原型上)
class Person{ constructor( ){ } } class Son{ constructor( ) { } } //原型继承 将对应的继承的对象的值赋给对应的原型 Son.prototype = new Person( );
3. 通过this来指向继承
function Person(){ this.name = "hahah" } function Son(){ Person.call(this); //更改this的指向 this.age = 18; } var son = new Son(); console.log(son.name, son.age);
4. 组合继承
function Person(){ this.name = "hahah" } function Son(){ Person.call(this); //更改this的指向 this.age = 18; } Son.prototype = new Person(); var son = new Son(); console.log(son.name, son.age);
闭包
闭包的概念: 函数嵌套函数, 内部函数可以访问外部函数的变量和参数, 而变量和参数不会被垃圾回收机制回收
1. 在函数内部返回函数
2. 函数内部都要存储对应外部函数引用
3. 这个数据不会被回收 ( 持久化 )
形成闭包
- 2个嵌套函数
- 利用作用域
- 垃圾回收机制
语法 :
function fn( ) { function show( ) { //私有函数 var myname = "刘德华"; //私有属性, 私有变量 } return show; } var f = fn( ); f( ) //f-->show ---> show( ) 执行了show函数 Java 公共 public Java 私有 private Java 静态 static 私有 : 受保护, 不能被外部访问, 就称之为私有
函数的执行过程
function fn( ) { console.log(123); var message = "hello"; var number = 0; number++; console.log(message); console.log(number); } fn( ) //执行完 以后message会被回收 number值为1 fn( ) //执行完 同样被回收
1. 预编译
- --- 开辟一个内存空间装函数对象
- --- 在对应的内存空间再开辟一个空间/代码块空间(来装代码)
2. 执行
- 找到函数的对象空间, 在这个对象空间上开辟一个执行空间
- 再将对应的代码块的空间合并到执行空间里面去, 进行代码的执行
- 执行完毕, 执行空间销毁, 对应的代码块空间也会被销毁
- 对应的代码块里面的内容就会被垃圾回收机制回收
对应流程结束后, 对应的函数代码块中声明的变量全部被回收
- 第一次执行和第二次执行中声明的变量不是一个,是不相同的
- 想要对应变量不被回收 ---> 再开辟一个空间, 将数据存入, 这个空间与执行空间无关
闭包优点
1. 持久化, 可以作为缓存
2. 不会造成数据的全局污染 (外部的内容不会直接访问函数内部的变量)
闭包缺点
1. 因不会被回收, 内存空间会被一直占用
2. 会一直保持引用
示例
function sum( ) { let number = 10; return function( ) { number++; console.log(number); } } var fn = sum( ); fn( ) ; //11 fn( ); //12
闭包的应用
防抖
1. 执行一个内容时, 只执行一次
举例 : 电梯间隔二十秒关门, a 进来时, 等20秒, 20秒还没结束, b 上来, 关门操作被终止, 重新开始20秒等等关门操作, 这是c上来,b 的关门操作被终止, 再次重新20秒关门操作
节流 ( 事件处理 )
在规时间内只执行的次数, 只执行第一次
节流和防抖区别
节流只会在规定时间男执行一次 ( 总共会执行一次 )
防抖在一定时间内只会执行一次 ( 总共只会执行一次 )
函数柯里化 ( 颗粒化 )
概述 : 将多个参数的方法拆分为多个单个参数的方法
普通求和函数
简单的函数柯里化
垃圾回收机制(GC)
JS引擎会在一定的时间间隔来自动对内存进行回收(把内存释放)
两种回收机制:
- 标记清除
- 引用计数 --- 针对与 [ 引用类型 ] -- function/date/Array/Object
标签:function,函数,继承,回收,Son,Person,执行 来源: https://www.cnblogs.com/huanglidan/p/16410843.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。