前端面试复习 原文http://icaoguo.com/?p=85
prototype 节省内存 所有实例化的对象的方法都指向同一个内存 普通实例化都会额外划出需要的内存
闭包 闭包就是能够读取其他函数内部变量的函数 像C# 的set get 函数内的私有方法开放端口给外界访问
闭包实现自增函数
var main = function(){
var data = 0;
return function(){
return data++;
}
}
var m = main();
利用了闭包和垃圾清除机制,只要一个函数处于被引用状态,就不会被回收。
单元测试 最小可测试的范围 可能是一个函数 一个类
测试用例 是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果 表格形式
replaceAll
str.replace(/some/g,‘’);
数组排序
[{age: 1},{age: 4},{age: 3},{age: 2}].sort(function(a,b){ return a.age-b.age;})
箭头函数
var a = {
name : "222",
fun : function(){
var fn =()=> {
console.log(this.name);
};
return fn();
}
}
a.fun.call({name: "2333"});// 2333
a.fun();// 222
js 执行顺序 单线程
setTimeOut会被放到最后线程池执行 先放先执行
继承 寄生继承 可以得到父类的属性和原形链 且不会像Cat.prototype = new Animal();
子类不会初始化2次实例方法 属性
function Cat(name){
Animal.call(this);
this.name = name || 'Tom';
}
(function(){
//创建一个没有实例方法的类
var Super = function(){};
Super.prototype = Animal.prototype;
//将实例作为子类的原型
Cat.prototype = new Super();
})();
var cat = new Cat();