zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    thinkphp3.2v
    ng-select 下拉的两种方式
    angular的时间指令 以及防止闪烁问题
    angularjs中的几种工具方法
    运用正则+replace+substring将一段英语的字母大写 angurlar运用自定义指令filter完成首字母大写
    angularjs bind与model配合双向绑定 表达式方法输出
    ajax跨域问题
    团队作业一
    校外实习报告(四)
    校外实习报告(三)
  • 原文地址:https://www.cnblogs.com/king-bj/p/4398979.html
Copyright © 2011-2022 走看看