• 多态经典案例
经典案例,看代码:
<html>  <head>  <script language="javascript">  function Master(){//给动物喂食this.feed=function(animal,food){window.alert(animal.constructor);document.write("主人给 "+animal.name+" 喂食 "+food.name+"<br/>");}}//写食物function Food(name){this.name=name;//...}function Fish(name){this.food=Food;this.food(name);}function Bone(name){this.food=Food;this.food(name);}function Taozi(name){this.food=Food;this.food(name);}//动物function Animal(name){this.name=name;}function Cat(name){this.animal=Animal;//对象冒充this.animal(name);}function Dog(name){this.animal=Animal;//对象冒充this.animal(name);}function Monkey(name){this.animal=Animal;//对象冒充this.animal(name);}var cat=new Cat("小猫咪");var dog=new Dog("小狗");var fish=new Fish("小鱼");var bone=new Bone("骨头");var master=new Master();master.feed(cat,fish);master.feed(dog,bone);master.feed(new Monkey("小猴"),new Taozi("桃子"));</script>  </head>  <body></body>
</html>  
  • 闭包 ----什么是闭包

闭包(closure)
javascript闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),而这些键值对是不会随上一级函数的执行完成而销毁。

<html>  <head>  <script language="javascript">  //闭包 closurefunction a(){  var i=0;  function b(){  alert(++i);  }  return b;  }  //闭包和GC有关系a();//此时,内存中会给i分配一个空间,当运行完a()后,GC就把i的空间当作了垃圾var c=a();   //当把 a() 赋给c后 ,GC没有把 i 的空间当作垃圾,因为他认为后面可能c还会用到i这个值,就不会把i的空间当作垃圾c();  // 返回 1c();  //返回 2,更能说明 i 的空间没有被当作垃圾来回收</script>  </head>  <body></body>
</html>  

这样在执行完var c=a()后,变量c实际上是指向了函数b,b中用到了变量i,再执行c()后就会弹出一个窗口显示 i 的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内部的函数b
就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个我们通常所谓的闭包。
闭包的作用:就是在a执行完并返回后,闭包使得javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。
进一步对闭包解释:

  1. 闭包和gc是相关联的
  2. 闭包实际上是涉及到一个对象的属性,何时被gc处理的问题
  3. 怎样才能对对象的属性形成一个闭包(看上面的案例)

韩顺平 javascript教学视频_学习笔记20_多态经典案例_补讲闭包细节相关推荐

  1. 韩顺平 javascript教学视频_学习笔记34_js正则表达式详解

    内容介绍----正则表达式的详解 正则表达式对象: RegExp对象方法 我们来看一下RegExp对象都有哪些方法 例子不举了,很简单 String 对象与正则表达式有关的方法 这四个方法是属于Str ...

  2. 韩顺平 javascript教学视频_学习笔记17_js超级玛丽小游戏

    采用面向对象思想设计超级马里奥游戏人物 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或函数式的方式写 ...

  3. 黑马前端教学视频的学习笔记(三)

    JavaScript JavaScript基础 JavaScript: * 概念: 一门客户端脚本语言* 运行在客户端浏览器中的.每一个浏览器都有JavaScript的解析引擎* 脚本语言:不需要编译 ...

  4. 哔哩官方教学视频 TouchDesigner 学习笔记

    1.下载软件https://derivative.ca/download 2.注册账号https://derivative.ca/user/register 3.邮箱点击password激活链接 4. ...

  5. 黑马前端教学视频的学习笔记(二)

    HTML&CSS HTML标签:表单标签 CSS: HTML标签:表单标签 * 表单:* 概念:用于采集用户输入的数据的.用于和服务器进行交互.* form:用于定义表单的.可以定义一个范围, ...

  6. python菜根谭小猫_少儿编程国学动画经典案例_作者:李兴球

    可爱的猫咪们在窗口中走来走去,还时不时地说出句鸡汤文,它们优雅地步伐会让你联想到它们是捉老鼠的家猫吗? """    菜根谭小猫.py    本程序演示四只行走的小猫,碰 ...

  7. 韩顺平php可爱屋源码_韩顺平_php从入门到精通_视频教程_第20讲_仿sohu主页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理...

    韩顺平_php从入门到精通_视频教程_第20讲_仿sohu首页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理 对sohu页面的分析 注释很重要 经验:写一点,测试一点,这是一个很好的方法. ...

  8. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  9. 《零基础学JavaScript(全彩版)》学习笔记

    <零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...

最新文章

  1. Jieba分词原理与解析
  2. poi xwpf 转换成 html,Apache POI创建的docx文档无法转化成html
  3. sap 标准委外和工序委外_「SAP技术」SAP MM 委外加工采购流程里副产品的收货
  4. 洛谷P1019 单词接龙
  5. mysql 查看锁表日志_MYSQL 表锁情况查看
  6. 01算法 java_蓝桥杯:基础练习 01字串【JAVA算法实现】
  7. CVPR 2020|不惧目标遮挡,英伟达提出全景感知的图像合成方法
  8. Hive常见的存储格式文件比较
  9. android缓存框架SimpleCache
  10. LeetCode输入字符串,倒序输出---C语言
  11. Java中的线程协作之Condition
  12. 目前M院M师的教学乱象
  13. 【车间调度】基于matlab鸟群算法求解车间调度问题【含Matlab源码 1395期】
  14. 业务系统+电子签章开放平台,快速构建个性化的电子签署应用
  15. android 时钟动态图标,神奇的Android动态时钟/时间UI界面
  16. 鼠标悬停放大图片特效
  17. 网络安全专家教你设置史上最安全的WiFi密码
  18. Windows10关于拨号上网热点分享的操作
  19. There are 2 audio listeners in the scene.的问题
  20. 缓存的有效期和淘汰策略【Redis和其他缓存】【刘新宇】

热门文章

  1. 基于JSP的足球直播论坛的设计与实现
  2. echarts配置多个y轴
  3. connection holder is null 异常
  4. Android银联手机控件支付使用教程
  5. matlab计算npv,哪位大神看看这个程序呀,参数下面给了
  6. 配置crond定时任务
  7. c++函数指针和函数对象
  8. 简单工厂模式——2016手机也疯狂
  9. 八、Nunjucks模板语法
  10. ubuntu16.04下使用mktorrent代替utorrent做种生成.torrent文件