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

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/king-bj/p/4398979.html
Copyright © 2011-2022 走看看