link是XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本(IE5及以下)的浏览器不支持。
:link支持使用Javascript控制DOM去改变样式;而@import不支持。
(1)给父级元素单独定义高度(height) (2)在标签结尾处加空div标签 clear:both (3)父级div定义 伪类:after 和 zoom (4)父级div定义 overflow:hidden (5)父级div定义 overflow:auto
JavaScript Array map() 方法
定义和用法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
因为 parseInt 需要两个参数 (val, radix),但 map 传了 3 个 (element, index, array)
即原例子相当于
[parseInt(“1”,0), parseInt(“2”,1), arseInt(“3”,2)]
强制转换:parseInt(),parseFloat(),Number()
隐式转换:== , ===
slit() 是切割成数组的形式
join() 是将数组转换成字符串
push() 数组尾部添加元素
pop() 删除数组尾部的元素
unshift() 向数组头部添加元素
shift() 删除数组头部元素
深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。 假设B复制了A,修改A的时候,看B是否发生变化:
如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)
浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,
1.封装组件
把所有需要复用的功能或网页模板封装成组件,在需要的时候调用它。 2.图片
压缩图片的质量,或者使用打包工具来压缩图片的质量,当图片过小时(小于12k)可以把它转成base64(代码图片,转成base64的好处:减少http请求),或者使用 sprites(精灵图)把网页中需要用的到图片整合到一张图片中,减少http请求的次数。 3.压缩html,js减小大小
4.懒加载(lazy load)
网页不拖动时,未展示的栏目不去(加载)请求,良好的利用服务器资源。 5.设置http缓存
6.减少DOM操作
dom操作是脚本中最耗性能的一个操作,例如:元素的增删改或dom集合的进行的操作
7.将外部脚本置底
不影响html的加载
8.减少作用域链查找
9.不要使用全局变量(能不用的情况下最好不用)
作用 call()方法和apply()方法的作用相同:改变this指向;一样改变 this 的还有 bind,bind并没有立即执行函数,只是预先把处理改变函数中的 this 区别 他们唯一的区别就是传参的不同: call():第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。在使用call()方法时,传递给函数的参数必须逐个列举出来。
apply():传递给函数的是参数数组 性能 call 的性能要比 apply 好一些(尤其是传递给函数的参数超过三个的时候)
function AddFun(c, d){ return this.age1 + this.age2 + c + d; } var Object = {age1:5, age2:10}; AddFun.call(Object, 1, 2); // 5 + 10 + 5 + 7 = 16 AddFun.apply(Object, [10, 20]); // 1 + 3 + 10 + 20 = 34