![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
飞向月球8
专注前端技术
展开
-
js基础:执行环境及作用域链
理解js的执行环境以及作用域链,对于理解js的有很大的帮助原创 2017-09-08 16:31:56 · 350 阅读 · 0 评论 -
2、js基础:垃圾收集
1、执行环境会负责管理代码执行过程中使用的内存 2、原理:找出那些不再继续使用的变量,然后释放其内存 3、垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)周期性的执行内存回收操作 4、垃圾回收中,标示无用变量通常使用两个策略:标记清除、引用计数 5、标记清除:最常用的策略==>变量进入环境时,被标记“进入环境”,离开环境时,则将其标记为“离开环境” 6、优化内存占有的最佳方式:原创 2017-09-08 17:07:10 · 222 阅读 · 0 评论 -
3、js基础:栈、堆内存的使用
1、基本类型值在内存中占据固定大小的空间,被保存在栈内存中 2、引用类型的值是对象,保存在堆内存中 3、基本类型的复制,会创建被复制值得一个副本 4、包含引用类型值得变量只是一个指向相应对象的一个指针 5、引用类型的复制,复制的只是指针原创 2017-09-08 17:12:35 · 227 阅读 · 0 评论 -
4、js基础:创建对象
1、可以使用Object构造函数或对象字面量创建对象,但也有缺点:使用同一个接口创建很多对象时,会有很多的重复代码 2、工厂模式 优点:在创建多个同类型对象时,不用写大量的重复的代码了 缺点:不能解决对象识别的问题,也就是没法确定对象类型(因为内部是通过Object构造函数实现的) eg://创建对象的工厂函数function createPerson(name){ var o =原创 2017-09-08 17:17:11 · 187 阅读 · 0 评论 -
5、js基础:原型对象
eg://定义类function Person(){} Person.prototype.name = "licl"; Person.prototype.sayName = function(){ alert(this.name);}//实例化var person1 = new Person();person1.sayName();//"licl"var person原创 2017-09-08 17:22:11 · 190 阅读 · 0 评论 -
6、js基础:继承
1、Es中,由于没有函数签名,无法实现接口继承,只支持实现继承(实现继承主要是依靠原型链来实现的) 2、继承实现:让B类的原型对象等于A类的实例,这样B类的原型对象中有个内部指针[[prototype]]指向A类的原型对象, 这样如果继续有C类的原型对象等于B类的实例,层层套下去,就构成了一个实例有原型之间的链条function A(){ this.flag = true;原创 2017-09-08 17:25:42 · 243 阅读 · 0 评论 -
7、js基础:继承实现技术(解决继承含有的缺点)
1、原型链实现继承存在的问题:(因为这些问题的存在,实践中很少会单独使用原型链) (1)、由于共享的特性,而造成修改一个父级的一个引用类型属性值时,会影响到其他实例 (2)、没办法在不影响所有对象实例的情况下,给超(父)类型的构造函数传递参数 2、借用构造函数(伪造对象、经典继承) 优点: 解决原型中包含引用类型值所带来的连带修改的问题 可以在子类型构造器中项超类型构造函原创 2017-09-08 17:27:17 · 490 阅读 · 0 评论 -
8、js基础:闭包
1、闭包是指一个函数,有权访问另一个函数作用域中的变量 2、闭包常见的方式:就是在一个函数内部创建另一个函数、function A(p){ return function(o1,o2){ var value1 = o1[p]; var value2 = o2[p]; return value1 }}3、对于一般函数来讲,其作用域链会原创 2017-09-08 17:30:40 · 225 阅读 · 0 评论