js学习20150401(六)

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

原文地址:https://www.cnblogs.com/king-bj/p/4398979.html