前端面试题小记(一)

1.JS的typeof返回类型有哪些?

object,number,function,boolean,undefind,string

2.检测数组的几种方式

Array.isArray();  //es5
toString.call([]);  //[object Array]
var arr = [];
arr.constructor;  //Array
instanceof Array

3.传统的事件绑定与符合W3C标准的事件绑定有何区别?

传统的事件绑定:
  1. 如果给同一个元素绑定了多个同类型的事件,那么后面的绑定会覆盖前面的绑定
  2. 不支持DOM事件流
符合W3C标准的事件绑定的方式(addEventListener/attachEvent):
  1. 如果给同一个元素绑定了多个同类型的事件,所有的绑定将会一次触发
  2. 支持DOM事件流
  3. 进行事件绑定传参不需要on前缀

4.call和apply的异同

相同点:都是为用一个本不属于一个对象的方法,让这个对象去执行
toString.call([],1,2,3);
toString.apply([],[1,2,3]);
Object.call(this.obj1,obj2,obj3);
Object.apply(this.)
区别:call第二个参数开始接受一个参数列表,apply第二个参数开始接受一个参数数组

5.JS如何实现继承

原型链继承,借用构造函数继承,原型+构造函数组合继承,寄生式继承

6.JS创建对象的几种方式

  1. 对象字面量,Object构造函数
  2. 构造函数
  3. 纯构造函数
  4. 空构造函数+原型
  5. 混合构造函数+原型
  6. 动态原型
  7. 寄生构造函数
  8. Object.create()—ES5

7.JS中this指针,闭包,作用域

  • this:指向调用上下文
  • 闭包:内层作用域可以访问外层作用域的变量
  • 作用域:定义一个函数就开辟了一个局部作用域,整个js执行环境有一个全局作用域

8.如何阻止事件冒泡和默认事件

阻止事件冒泡:
e.stopPropagation();  //标准浏览器
event.canceBubble = true;  //ie9之前
阻止默认事件:为了不让 a 点击后跳转,我们要给他的点击事件进行阻止
return false;
e.preventDefault();

9.JS的同源策略

一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名,协议和端口号的组合。
  • 协议:http,ftp
  • 主机名:localhost
  • 端口名:80
  • http协议的默认端口:80
  • https协议的默认端口:8083
  • 同源策略带来的麻烦:ajax在不同域名下的请求无法实现。

10.编写一个数组去重的方法

方法一:
  1. 先创建一个空数组,用来保存最终的结果
  2. 循环原数组中的每一个元素
  3. 再对每一个元素进行二次循环,判断是否有与之相同的元素,如果没有,将这个元素放到新数组中
  4. 返回这个新数组

方法二:
数组的indexOf()方法返回给定元素能在数组中找到的第一个索引值,否则返回-1。

Arry.prototype.unique2 = function(){
	var n = [];  //一个新的临时数组
	for(var i = 0; i < this.length; i++)//遍历当前数组
	{
		//如果当前数组的第i项已经保存进了临时数组,那么跳过
		//否则把当前项push到临时数组当中
		if(n.indexOf(this[i]) == -1) 
		n.push(this[i]);
	}
	return n;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值