js继承与闭包(笔记)
1、一切引用类型都是对象,对象时属性的集合;typeof null === 'object'(例外);
2、对象都是通过函数创建来的,比如var obj = new Object();typeof Object === 'function';
3、函数有隐藏属性prototype,对象有隐藏属性__proto__;
Func.prototype.constructor === Func;
func.__proto__ === Func.prototype;
4、对象的__proto__属性都指向创建它的函数的prototype;
Object.prototype.__proto === null;
Object.__proto__ === Function.prototype;
Function.__proto__ === Function.prototype;
Function.prototype.__proto === Object.prototpe;
5、instanceof 其实是一种继承关系,A instanceof B(沿着A的__proto__找,同时沿着B的prototype找,如果最终能找到同一个饮用,就true);
6、访问一个对象的属性,如果自身没有,则沿着__proto__向上找,这就是原型链;
7、var obj = {},arr = [];
obj.toString === '[object Object]';
arr.toString === ''; 说明Array.prototype.toString方法被改了;
8、处于活动状态的执行上下文只有一个;
作用域是一个抽象的概念,其中没有变量,要通过作用域对应的执行上下文来获取变量的值,且不同的调用会产生不同的上下文;
函数是在定义时就确定了函数体内部自由变量的作用域;
除了全局作用域,只有函数是可以创建一个独立的作用域;
要区一个变量的值,要到创建它的函数的那个作用域中取值,这就是所谓的静态作用域;
在A作用域中使用的变量a,却没在A中声明,则称a是自由变量;
9、1⃣️ 函数作为构造函数用,this指向new出来的对象;
2⃣️ 函数作为对象的一个属性被调用,this指向该对象;
3⃣️ 在call、apply中,this指向传入的对象;
4⃣️ 全局调用普通函数,this指向window;
10、闭包特性:函数嵌套函数;函数内部可引用外部变量;变量不会被回收。
闭包
是指有权访问另一个函数作用域中的变量的函数,闭包缺点是容易内存泄露。
垃圾回收原理:在javascript
中,如果一个对象不再被引用,那么这个对象就会被GC
回收; 如果两个对象互相引用,而不再被第3
者所引用,那么这两个互相引用的对象也会被回收。
js继承与闭包(笔记)的更多相关文章
- 【学习笔记】深入理解js原型和闭包系列学习笔记——精华
深入理解js原型和闭包笔记: 1.“一切皆是对象”,对象是属性的集合. 丨 函数也是对象,但是使用typeof时为什么函数返回function而 丨 不是object呢,js为何要对函数做这样的区分 ...
- 【学习笔记】深入理解js原型和闭包(6)——继承
为何用“继承”为标题,而不用“原型链”? 原型链如果解释清楚了很容易理解,不会与常用的java/C#产生混淆.而“继承”确实常用面向对象语言中最基本的概念,但是java中的继承与javascript中 ...
- 【学习笔记】深入理解js原型和闭包(0)——目录
文章转载:https://www.cnblogs.com/wangfupeng1988/p/4001284.html 说明: 本篇文章一共16篇章,外加两篇后补的和一篇自己后来添加的学习笔记,一共19 ...
- JavaScript面向对象(三)——继承与闭包、JS实现继承的三种方式
前 言 JRedu 在之前的两篇博客中,我们详细探讨了JavaScript OOP中的各种知识点(JS OOP基础与JS 中This指向详解 . 成员属性.静态属性.原型属性与JS原型链).今天 ...
- 【学习笔记】深入理解js原型和闭包(7)——原型的灵活性
在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完).压个啥样,就得是个啥样,不能随便动,动一动就坏了. 而在javascript中,就没有 ...
- 【学习笔记】深入理解js原型和闭包(5)——instanceof
又介绍一个老朋友——instanceof. 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/ ...
- 【学习笔记】深入理解js原型和闭包(18)——补充:上下文环境和作用域的关系
本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事.本文就用一个小例子来说明一下,作用域和上下文环境绝对不是一回事儿. 再说明之前,咱们先用简单的语言来概括一下这两个的区别. 0 ...
- 【学习笔记】深入理解js原型和闭包(17)——补this
本文对<深入理解js原型和闭包(10)——this>一篇进行补充,原文链接:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中, ...
- 【学习笔记】深入理解js原型和闭包(16)——完结
之前一共用15篇文章,把javascript的原型和闭包讲解了一下. 首先,javascript本来就“不容易学”.不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascrip ...
随机推荐
- (读书笔记)第2章 TCP-IP的工作方式
第2章 TCP-IP的工作方式 TCP/IP协议系统 为了实现TCP的功能,TCP/IP的创建者使用了模块化的设计.TCP/IP协议系统被分为不同的组件,每个组件分别负责通信过程的一个步骤.这种模块化 ...
- loadrunner入门篇-Analysis 分析器
analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来分析性能测试结果的数据图,但并不一定要对每个视图进行分析,可以根据实际情况选择相关的数据视图进行分析, ...
- redux-form的学习笔记二--实现表单的同步验证
(注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...
- JAVA面试题和答案(二)
本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能 ...
- intent,实现两个活动之间数据的传递
一.Intent 可以启动一个活动,也可以在启动活动的时候传递数据.intent中提供了putExtra()方法,它可以把我们想要传递的数据暂存在intent中,启动了另一个活动后,通过getInte ...
- 原生ajax详解
Ajxa局部刷新用于提高用户体验.Ajax技术的核心是XMLHttpRequest对象(简称XHR) XMLHttpRequest对象 XMLHttpRequest对象在ie7及更高版本可以这样申明. ...
- golang http server分析(一)
http:http请求过程实质上是一个tcp连接通信,具体通过socket接口编码实现 在go中是通过listenAndServer()方法对外提供了一个http服务,在该方法中完成了socket的通 ...
- MyBatis快速入门(一)
一.MyBatis背景介绍 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的 ...
- 基于模糊聚类和最小割的层次化网格分割算法(Hierarchical Mesh Decomposition)
网格分割算法是三维几何处理算法中的重要算法,具有许多实际应用.[Katz et al. 2003]提出了一种新型的层次化网格分割算法,该算法能够将几何模型沿着凹形区域分割成不同的几何部分,并且可以避免 ...
- 《Django By Example》第十一章 中文 翻译 (个人学习,渣翻)
第十一章 缓存内容 (译者 @ucag 注:这是倒数第二章,最后一个项目即将完成. @夜夜月 将会接过翻译的最后一棒.这本书的翻译即将完成.这也是我翻译的最后一章,作为英语专业的学生,我对于翻译有了更 ...