1.JS的typeof返回类型有哪些?
object,number,function,boolean,undefind,string2.检测数组的几种方式
Array.isArray(); //es5
toString.call([]); //[object Array]
var arr = [];
arr.constructor; //Array
instanceof Array
3.传统的事件绑定与符合W3C标准的事件绑定有何区别?
传统的事件绑定:- 如果给同一个元素绑定了多个同类型的事件,那么后面的绑定会覆盖前面的绑定
- 不支持DOM事件流
- 如果给同一个元素绑定了多个同类型的事件,所有的绑定将会一次触发
- 支持DOM事件流
- 进行事件绑定传参不需要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创建对象的几种方式
- 对象字面量,Object构造函数
- 构造函数
- 纯构造函数
- 空构造函数+原型
- 混合构造函数+原型
- 动态原型
- 寄生构造函数
- 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.编写一个数组去重的方法
方法一:- 先创建一个空数组,用来保存最终的结果
- 循环原数组中的每一个元素
- 再对每一个元素进行二次循环,判断是否有与之相同的元素,如果没有,将这个元素放到新数组中
- 返回这个新数组
方法二:
数组的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;
}