1.typeof和instanceof区别
typeof一般用来判断变量属于哪个类型 返回值是字符串 number string function object Boolean undefined
对Arrary 和null等特殊对象返回值都是object 这也是它的局限性
instanceof 返回值是boolean 一般用来判断某变量是否是某个对象的实例
let arr = new Array();
alert(arr instanceof Array) //true
alert(arr instanceof object) //true
2.什么是跨域,解决跨域的方法?
因为浏览器有同源策略的问题,所以只要请求的url与要请求的页面地址的域名,协议,端口号不同即为此问题
解决方法:porxy代理 通过将请求发送个后台服务器,利用服务器发送请求,将请求结果返回给前端。ngxin代理
corx:现代浏览器支持跨域请求最常用的方式 后台人员在处理请求数据的时候,加上允许跨域的相关操作
jsonp:创建script,因为script引入的资源,可以直接在页面加载使用
3.闭包
定义:一个函数的返回值是另一个函数,此函数调用其父函数其他的变量,返回值函数在外部被使用,形成闭包
缺点:容易造成内存泄漏;使父函数内部变量的值改变
4.什么是垃圾回收机制及内存管理?
回收机制方式:定义:垃圾回收机制,执行环境负责管理代码执行过程中使用的没存
原理:垃圾收集器会定期找出那些不再使用的变量,然后释放内存。
垃圾回收策略:标记清除:当变量进入环境时,会被标记,当变量离开环境时,还是会被标记,一段时间,垃圾回收器会将过滤掉,环境中的变量和被标记的使用的环境变量,其他的都被回收掉。
引用计数:每被使用一次就增加一,一段时间后,引用为0的被回收掉
内存管理
什么时候出发垃圾回收:IE6的回收是根据内存分配量运行的,
IE7根据内存分配量和程序占用内存的比例进行调整
5.什么是内存泄露,内存泄露的情况和如何解决
定义:内存泄漏是指一块内存,即不能使用,永不能回收,直至浏览进程结束
a.当页面元素被删除时,其绑定的事件没有被删除,此时需要手动删除绑定事件
b.闭包使用不当会形成内存泄漏,退出函数之前,将不使用的局部变量删除
6.原型链
function teacher(name){
this.name=name;
}
teacher.prototype.sayName=function(){
console.log('我的名字是'+this.name);
}
tea1 = new teacher('xiaoming');
tea1.sayName(); //我的名字是xiaoming
function student(name){
this.name=name;
}
student.prototype = new teacher();
stu1 = neww student('xiaohong');
stu1.sayName(); //我的名字是xiaohong
7.call(),apply()改变this指向
function teacher(name,age){
this.name = name;
this.age = age;
this.say = function(){
alert('姓名'+ name + '年龄'+ 'age')
};
}
tea1 = new teacher('xiaoming',23);
tea1.say() //姓名xiaoming年龄23
function student(){
let args = arguments;
teacher.call(this,args[0],args[1]);
//teacher.apply(this,args);
}
stu1 = new student('xiaohong',22)
stu1.say() //姓名xiaohong年龄22