以链表形式构建的堆栈数据结构,能够实现动态增长节点,无需预先分配内存。javascript
空类型:undefined null
值类型:基本数据类型 String Number Boolean
引用型:复杂数据类型 Object Array 对象css
值类型的值在栈空间存储,引用类型的对象在堆中存储,地址在栈中存储
基本类型(值类型)在调用函数的时候,传递的是值
引用类型,在函数调用的时候,传递的是地址(引用)html
null值表示一个空对象指针,而这也正是使用typeof操做符检测null值会返回“object”的缘由,因此null放在堆中存储前端
find方法和findIndex方法java
let numbers = [25, 30, 35, 40, 45] console.log(numbers.find(n => n > 35))//40 console.log(numbers.findIndex(n => n > 35))//3
定型数组 定型数组的length属性是一个不可写属性,因此不能修改定型数组的大小es6
let buffer = new ArrayBuffer(10) let buffer2 = buffer.slice(4, 6) console.log(buffer2.byteLength)//2
闭包:实如今函数内部的函数
闭包的做用:面试
闭包的缺点:segmentfault
实现属性私有化:
经过闭包实现数组
var ClassA = function() { var name = "yourname"; //私有属性 var privateMethod = function() //私有方法 { alert("private"); }; //getter this.getName = function() { privateMethod(); return name; } //setter this.setName = function(newName) { name = newName; } };
不改变数组的方法:数据结构
改变数组的方法
怎么判断对象是数组的
function judgeArr(arr){ return Array.isArray(arr); //或者 Object.prototype.toString.call(arr) == '[object Array]' }
isArray是Array的方法
js有以下两种数据须要常常遍历
数组(Array)
对象(Object)
同时又提供了以下8种方法方便咱们遍历元素
forEach方法放入break会报错,return也没法跳出循环
若是须要在遍历中跳出循环,可使用Array.some()[return true时跳出循环]或者Array.every()[return false时跳出循环]
遍历,== 或者 === 判断便可
事件捕获 指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡 是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,个人爹和祖宗的事件就不要触发了。
至于为何会并存两种彻底不一样的触发顺序,是由于IE用的是冒泡,其余都是捕获顺序。
当网页中须要触发事件的对象比较多的时候,为了不内存泄漏,咱们把事件委托到其父对象上,好比li上的事件委托到ul上,也能够称为交给ul进行代理。
$("ul").on("mouseover",function(e){ $(e.target).css("background-color","#ddd").siblings().css("background-color","white"); })
e.target能够判断事件发生的源节点。
event.target返回触发事件的元。
event.currentTarget返回绑定事件的元素。
CSS方法
opacity: 0
经过调整透明度从视觉上隐藏元素,元素依旧占据位置并对网页的布局起做用,也会影响用户交互。visibility: hidden
设置可见或者不可见,被隐藏的元素依然会对网页布局起做用,但不会影响用户交互。diaplsy: none
隐藏元素,确保元素不可见而且连盒模型也不生成,被隐藏的元素不占据任何空间。position:absolute
配合 top 和 left 属性,将元素移出可视区域,不会影响布局,又能让元素保持可操做。JS方法
DomNode.delete(Node)
经过JS来删除DOM树的节点,实现元素隐藏,缺点是若是要再显示该节点,须要添加该节点参考文章
JavaScript 深拷贝性能分析 - 前端进阶 - SegmentFault 思否
使用slice和concat对数组的深拷贝和浅拷贝 - 白杨-M - 博客园