面试总结

2016-11-26  本文已影响0人  wuliwolfyuan
1.<!DOCTYPE>的作用
 此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范
2.Js中函数的几种声明方式

1.Function Declaration(函数定义)
function bar() { return 3;}
2.Function Expression(函数表达式)
//匿名函数表达式var a = function() { return 3;}
//有名函数表达式var a = function bar() { return 3;}
//自调用函数表达式(function sayHello() { alert("hello!");})();

3.数据类型

1.基本数据类型
num 布尔 str undefined null
2.引用数据类型
obj(arr function )

4.js中如何对一个对象进行深度克隆

首先克隆的概念要明白:
浅度克隆:原始类型为值传递,对象类型仍为引用传递。
深度克隆:所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。
深度克隆的实现:为了保证对象的所有属性都被复制到,我们必须知道如果for循环以后,得到的元素仍是Object或者Array,那么需要再次循环,直到元素是原始类型或者函数为止。为了得到元素的类型,我们定义一个通用函数,用来返回传入对象的类型。
注意:deepClone这个函数中的result一定要判断类型。

5.箭头函数

this是不会改变指向对象的指向。
注意:我们知道call和apply可以改变this的指向,但是在箭头函数中是无效的。

6.如何控制alert的换行

function alert_br(){
if(!document.all){//FF谷歌浏览器用这个
alert('第一行\n第二行');
}else{ //IE系列用这个
alert('第一行\r\n第二行);
}
}
alert_br();

7.把url解析为对象

var url="http://www.taobao.com/index.php?key0=0&key1=1&key2=2";
function parseQueryString(url){
var str =url.split("?")[1];
var items = str.split("&");
console.log(items);
var result={};
for(var i = 0; i<items.length ; i++){
arr = items[i].split('=');
result[arr[0]]=arr[1];
}
return result;
}
var obj=parseQueryString(url);
console.log(obj)

8.阻止a标签向herf跳转

dom0是return false;
dom2就是preventDefault();

9.JQ实现angular的双向绑定
10.事件委托(代理)

原理:在容器节点上绑定事件,利用冒泡,判断事件是否在指定的选择器的节点上被触发。
优点:只绑定一次,动态创建的也不用重复绑定

11.闭包

作用:外部可以读取函数内部的变量
变量一直被保存在函数内部不被释放掉。
会造成内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法:在退出函数之前,将不使用的局部变量全部删除。

12.请介绍熟悉的加载方案,不少于2种?

1.defer,只支持IE;

  1. async: async的定义和用法(是HTML5的属性) ;
    3.创建script,插入到DOM中,加载完毕后返回callBack。
13.js中如何定义class,如何扩展prototype

http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html
es6中 class Person {
constructor(name) { this.name = name; }
say () { console.log("say hi"); }};
new Person().say()

14.glup和fis3压缩工具

http://fis.baidu.com/fis3/docs/user-dev/uri.html

15.如何添加html元素的事件,有多少种方法

1.给元素直接绑定on事件类型
2.DOM0级
3.DOM2级

16.
上一篇下一篇

猜你喜欢

热点阅读