无标题文章

2016-10-25  本文已影响0人  qizi

## 知识点

1. 算法

基本的排序算法,时间复杂度

2. 数据结构

链表,查找,插入;平衡二插树,红黑树

2. 网络

TCP/IP,HTTP,HTTPS

3. 项目

项目要精心准备,要好好添油加醋,丰富项目内容,但要有限度

4. 前端

1. 跨域,浏览器的同源策略,以及跨域请求的方法(jsonp)

2. 闭包,相应的设计模式,单例模式

3. {}=={} []==[]  null==undefined,js中的基本数据类型,字面值和复杂值

4. 布局,圣杯布局,两列自适应布局

5. !important 网站的性能优化

6. 手写jquey插件,在jquery方法和原型上面添加方法的区别和实现($.extend,$.fn.extend),以及jquery对象的实现(return new jQuery.fn.init)

7. arguments.callee,以及arguments解释

8. 前端路由,前后端分离

9. ES6,promise等新的特性

10. webpack和gulp和requirejs

11. vue和react异同点与优势

12. CSS实现三角形,理解[http://codepen.io/qizi/pen/KgbNjN](http://codepen.io/qizi/pen/KgbNjN)的原理

13. 原生函数的使用,ajax

14. 模块加载

15. 原生dom

16. js事件处理

17. 原型链,原型继承和类继承

18. margin重叠

19. [Cookie](https://segmentfault.com/a/1190000004556040)

20. 外部引用CSS中 link与@import的区别

## 总结

1. 设计模式

> 设计模式是在经验中总结出来的可复用的可维护的代码框架,即使没有刻意在代码中使用设计模式,也可能在不经意中使用。

设计模式即是找出程序中变化的地方,并将变化封装起来。JS中的设计模式中不同的是原型继承,所有数据都是对象,通过克隆对象,

来进行实例化,并通过原型链进行查找。

+ 原型模式

**原型继承的本质:**

构造器将原型复制在实例对象上,但这种复制是读遍历。

一般有三种情况:

+ 构造复制:

从原型中复制出新的实例对象,与原型占用相同的内存空间。

+ 写时复制:

先不复制,只是链接到原型的地址,读取时直接通过链接读取。

当需要写入原型对象时,再将原型进行复制

+ 读遍历:

当需要写入原型对象时,只把要写入对象的成员复制到新的内存空间

> **注意\__proto\__与prototype的区别:\__proto\__是链接,prototype是原型对象**

```javascript

var obj1 = new Object();

var obj2 = {};

Object.getPrototypeOf(obj1) === Object.prototype;//true

Object.getPrototypeOf(obj2) === Object.prototype;//true

```

> **只有null是没有原型的对象,Object.prototype的原型是null,可通过Object.create(null)创建没有原型的对象**

但是`Object.__proto__ != null`,在chrome中

```javascript

Object.__proto__ //[[Function]]

Object.__proto__ === Function.prototype //true

Function.__proto__ == Function.prototype //true

Object.__proto__ === null //false

```

基本函数类型的原型都链接到了Function.prototype,因为这些都是构造函数吧。Function的原型连接到了自己的原型对象。

所以至少在V8的实现中Function是所有原型的顶点,除了null和undefined。

+ 柯里化

>又称部分求值,先接受一些参数,但并不立刻求值,二是继续返回另外一个函数,并将参数在闭包中保存。等到真正求值时,在一次性求值。

```javascript

var currying = function(fn){

var args = []

return function(){

if(arguments.length === 0){

return fn.call(this, args)

}else{

[].push.apply(args,arguments);

return arguments.callee;

}

}

};

var cost = (function(){

var money = 0;

return function() {

for(var i = 0; i < arguments.length; i++){

money += arguments[i];

}

return money

}

})();

var cost = currying(cost);

cost(100);

cost(200);

cost(300);

cost() //600

```

+ 单例模式

```javascript

var single = function(fn) {

var once;

return function() {

return once || (once = fn.apply(this,arguments))

}

}

```

上一篇下一篇

猜你喜欢

热点阅读