1、什么是原型链?
每一个构造函数都有一个prototype原型对象,同时这个对象里的constructor属性指回构造函数,当我们new出一个实例后,在查找属性时,如果自身有我们就使用自身的,没有我们就会找到实例对象的proto中的prototype,一直查找到object中,返回null为止
2、闭包?
在函数内部返回一个函数我们就可以称之为闭包,闭包的应用场景(循环绑定dom,缓存变量,下次需要时直接返回,不需要暴漏给全局)
funcrion a() {
var a = 1;
return function b() {
a++;
}
}
3、事件冒泡?
当在嵌套的盒子中我们给这嵌套的盒子同时绑定点击事件,点击里面的盒子,会影响到外面的盒子,外面的盒子一会触发点击事件,我们可以用e.stoppropagation 进行阻止,ie中我们用e.cancelbubble=true 可以解决
4、跨域?
ajax的jsonp跨域动态创建script标签进行跨域,后台接收函数名并返回结果,前端调用函数接受的结果值
Cors跨域资源共享:在服务器端设置头信息,指定网站可以获取数据
服务器代理当我们使用ajax发送请求时访问本服务器的php文件,通过file_get_contents方法读取其它服务器的数据,之后再返回给浏览器
5、Caller:谁调用指向谁
6、Call: 参数一为参数时普通调用,当第一个参数为对象时更改this指向 传参形式普通传参
7、Apply: 参数一为参数时普通调用,当第一个参数为对象时更改this指向传参形式为数组
8、函数继承的几种方式:
组合继承:利用call继承属性,prototype继承要继承的实例
借用构造函数继承:声明一个空的构造函数,利用其prototype继承继承要继承的实例,在new出实例
9、对象继承方式:
对象拷贝:利用for…in…循环遍历对象[k]=原对象的[k]
10、$是一个构造函数,$.fn就是$的原型对象,jquery就是new $() 的实例对象,插件的实现就是在原型对象上增加一个方法实现不同的功能
11、jq中的事件委托:
$(‘类名’).on(‘事件’,‘要委托的元素’,function() {})
移除事件:$(‘类名’).off(……)移出全部,也可以指定事件
移除委托事件:$(‘类名’).off(‘事件’,“**”)**为必传