面试总结

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.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何控制alert中的换行?\n alert(“p\np”); 请编写一个JavaScript函数 parseQu...
    heyunqiang99阅读 1,101评论 0 6
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,552评论 0 25
  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 1,424评论 1 27
  • HTML5面试题总结1.基础问题 = 和 == 和 === 的区别?= : 用于赋值 == : 用于判断 === ...
    LorenaLu阅读 1,210评论 0 4
  • 万物的签名 一开始被书名吸引 好奇这会是怎样的一本小说 越读越欲罢不能 很少有这种把自然和女性结合在一起的小说 读...
    _葡萄树_阅读 302评论 0 1