进行一波 强有力的复习
性能优化
1.稳定
2.扩展
3.性能
网络性能
执行性能
============================================
网络性能
第三方工具
Chrome NetWork
需要经验支撑分析。
Firefox YSLow
http://yslow.org/
插件版
必须先安装 Firebug
进入YSLow官网
点击Firefox
点击Add to Firefox
一定要在选项中把自动运行勾选
书签版
进入YSLow官网
点击install
把yslow按钮拖放到书签栏
重启浏览器
书签版不能检测https
有问题了。
网络性能优化
1.减少http请求
1个文件=一次连接+一次请求+一次等待+一次响应
100个文件=100连接+100请求+100等待+100响应
合并文件
2.合并文件
a).减少http请求
b).让资源更小
4KB一个单位,不足4KB按照4KB算
3.压缩代码
让文件更小
4.使用CDN加速
5.使用GZIP压缩
6.使用DNS
7.懒加载
更多搜索:雅虎军规
==================================================
执行性能
1.尽量不使用全局变量
2.尽量少使用闭包
3.减少DOM操作
4.少使用定时器
5.尽量使用正则操作字符串
6.尽量不使用属性
7.尽量使用CSS3
减少DOM操作
尽量不使用定时器
尽量不使用属性
var len = arr.length;
for(var i=0;i<len;i++){
}
不太有用
var str = '';
str+='abc';
str+='bcd';
str+='cde';
var arr = [];
arr.push('abc');
arr.push('bcd');
arr.push('cde');
var str = arr.join('');
字符串本身不可更改
=================================================
身份证校验
15位或18位
第一位一定不是0
最后一位可能是xX
/^[1-9](\d{13}|\d{16})[0-9xX]$/
==================================================
字符串操作
$.trim() 去掉首尾空格
==================================================
面向对象(OOP)
不知道原理,但是不影响使用。
==================================================
类 Class
泛指一类事物
对象 Object
某一个具体的东西
==================================================
对象由什么组成?
属性——特征
方法——行为
什么是属性
变量和属性一样。
属性是属于某个对象的。
变量是自由的。
什么是方法
函数和方法一样。
方法是属于某个对象的。
函数是自由的。
====================================================
创建一个类
构造函数
因为是创建对象的
两个问题:
1.没有new
2.同一个类的方法,不相等
================================================
加new
1.开头加new Object();
2.结尾加return this;
加方法不能直接在构造里写。
给构造的原型加
构造函数的原型
Person.prototype
====================================================
属性给构造的this加
方法给构造的原型加
Person类
function Person(name,age,gender){
this.name = name;
this.age = age;
this.gender = gender;
}
Person.prototype.showName = function(){
return this.name;
};
Person.prototype.showAge = function(){
return this.age;
};
Person.prototype.showGender = function(){
return this.gender;
};
===============================================
Dog 狗类
属性
方法
==============================================
this是什么?
不看定义,只看调用
方法是谁的,this就是谁
优先级
高
new Object
定时器 window
方法、事件 对象本身
正常调用 window\undefind
低
只管一层、只看最后一次调用
只看最后一次调用
============================================
面向对象三大特性:
封装 抽
继承 子继承父.父类有的,子类一定有。子类有的,父类不一定有。父类改变,子类跟着变。
多态 多种状态、多重继承
=================================================
继承
属性
方法
Person 人类
属性
name age gender
方法
showName() showAge() showGender()
Worker 工人类
属性
name age gender job
方法
showName() showAge() showGender() showJob()
矫正this指向
fn.call(this指向谁,arg1,arg2....);
或者
fn.apply(this指向谁,[arg1,arg2,arg3...]);
属性继承
function 子类(a,b){
父类.call(this,a,b);
或者
父类.apply(this,arguments);
}
方法继承
a).
子类.prototype = 父类.prototype;
问题:
子类的私有方法,父类也有。
原因:
引用。
b).
for(var key in 父类.prototype){
子类.prototype[key] = 父类.prototype[key];
}
问题:
子类的实例,不属于父类
c).
子类.prototpye = new 父类();
瑕疵:
子类实例.constructor 等于父类
d).
子类.prototype = new 父类();
子类.prototype.constructor = 子类;
万物皆对象
======================================================
typeof 检测基本数据类型
instanceof 检测复合类型
constructor 检测构造函数
======================================================
对象会有引用
======================================================
原型链
现在当前实例身上找,如果没有找构造类,如果类没有找父类原型,一级一级往上找,直到找到Object的原型。 如果没有就是 undefined