20141109
一、
move.js、自定义滚动条、通过事件委托拖拽多个div、手风琴
二、
2014-11-16/2014-11-23
chrome碰撞、球、分块、分布运动、官网效果、苹果菜单
三、
2014-11-30 讲jquery
2014-12-07 讲jquery插件
四、ajax步骤 2014-12-14
五、2015-1-11 正则
六、javascript面向对象:
1、递归
递归:函数自己调用自己
斐波那契数列(黄金分割数列、Fibonacci、兔子数列)
function fn(n){
if(n<=2){
return 1;
}else{
return fn(n-1)+fn(n-2)
}
}
fn(10);
2、var arr=[];
function fn(n){
if(n<=2){
return 1;
}else{
if(arr[n]){
return arr[n];
}else{
arr[n]=fn(n-1)+fn(n-2)
return arr[n];
}
}
}
垃圾回收:浏览器自动回收垃圾
3、性能优化:
项目:
1. 稳定性
2. 维护性
3. 性能
性能:
a). 网络性能
b). 执行性能
4、
好习惯:
1. 不用的东西删除 拖拽 jsonp
2. 尽量不使用全局变量
3. 能使用系统提供函数,坚决不自己写
4. 尽量使用正则操作字符串
5、注意:
1. DOM操作昂贵的,DOM操作是非常耗性能
运动:记得关闭定时器
如果一个运动,用户已经不注意了或者用户干脆看不见,一定要停(不要让它动)
变量
基数:1000000 次 chrome环境
DOM 7400
变量 15
6、
普通for & for in
//for in: 6000
//普通for: 8
7、变量 & 属性
//变量 10
//属性 900
8、
全局变量 & 局部变量
//全局变量 355
//局部变量 250
局部变量 > 全局变量 > 属性
为什么属性性能低?取决于对象身上属性多少
//属性window 900
//属性json 15
var json={a:12};
//window.a=12;
window.onload=function(){
var s=new Date().getTime();
for(var i=0; i<1000000; i++){
//window.a++;
json.a++;
}
alert(new Date().getTime()-s);
};
9、
//Math.floor: 40
//parseInt: 550
var arr=[];
for(var i=0; i<10000000; i++){
arr[i]=Math.random()*i;
}
var s=new Date().getTime();
for(var i=0; i<arr.length; i++){
parseInt(arr[i]);
}
alert(new Date().getTime()-s);
10、
面向对象:不关心内部具体实现,只管用 思想
对象:万物皆对象
var oDate=new Date();
var arr=new Array();
var reg=new RegExp();
为什么需要面向对象?
提高生产效率
11、
this:当前发生事件的对象(元素)
当前的方法属于谁
* 默认情况下,全局属于window
var arr=[1,2,3];
arr.show=function(){
alert(this);
};
arr.show();
12、
局部函数里面this
严格模式:如何开启严格模式?
'use strict';
严格模式好处:
1. 修复了局部函数里面this
下面这段代码加入严格模式和不加严格模式,打印的结果是不一样的
window.onload=function(){
function show(){
alert(this);
}
show();
};
2. 定义变量必须加var
3. 不允许你在if、for等里面是定义函数
4. 干掉了with
严格模式作用范围:
1. 最大也冲不出script标签
2. 单个函数
3. 作用于整个js文件
严格模式兼容么?不兼容
*** 每个js文件开头一定要加 严格模式 'use strict';
13、
new到底干啥了?
1. 自动给你创建一个空白的对象,并且赋值给this
function show(){
alert(this);
}
new show();
2. 自动返回this
function show(){
}
alert(new show());
new注意:new 后面跟的永远是构造函数
14、
类:构造函数 Array 没有实际功能,构造对象 模具
对象(实例):new出来是对象 arr 才有真正功能 蛋糕
-------------------------------------
面向对象特征:
封装:抽
*继承:
多态:多重继承
继承:父级有的东西,子级也有
父级添加一个东西,子级自然就有
15、
* 默认情况,所有东西都属于Object
原型链:对象用到了一个方法,先找自身,自己的父级,父级的父级...
typeof : 检测类型
检测对象具体类型:
instanceof: 检测自己父级,父级的父级...
constructor: 它的构造函数是谁,直接父级
请检测一个对象是否是json?
function isJson(arg){
return arg.constructor==Object;
}
var json={a:1,b:2};
var arr=[1,2,3];
alert(json.constructor);
alert(isJson(arr));
16、
2015-2-8 第一个面向对象的程序
诡异的事情,各种例子!!!
诡异事情:
1.
Function instanceof Object
Object instanceof Function
Function instanceof Function
Object instanceof Object
2.
alert(arr instanceof Array);
alert(Array instanceof Function);
alert(arr instanceof Function);
3.
Object.prototype.a=5;
var a=12;
alert(a instanceof Object);
包装类:
数字、字符串、布尔
数字-> new Number
字符串-> new String
布尔-> new Boolean
new Number(12)
17、2014-12-07 图片延迟加载等例子
18、前端模板,2015-1-25、2015-2-1