- 事件绑定和普通事件有什么区别
普通添加事件的方法:
var btn = document.getElementById("hello");
btn.onclick = function(){
alert(1);
}
btn.onclick = function(){
alert(2);
}
执行上面的代码只会alert 2
事件绑定方式添加事件:
var btn = document.getElementById("hello");
btn.addEventListener("click",function(){
alert(1);
},false);
btn.addEventListener("click",function(){
alert(2);
},false);
执行上面的代码会先alert 1 再 alert 2
小结:普通事件中的onclick是DOM0级事件只支持单个事件,会被其他onclick事件覆盖,而事件绑定中的addEventListener是DOM2级事件可以添加多个事件而不用担心被覆盖
- 如何阻止事件冒泡和事件默认行为
阻止冒泡:stopPropagation()
阻止默认:preventDefault()
-
window.onload 和document ready的区别
$(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕。 意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。 并且可以写多个.ready。 window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。
-
= = 和===的不同
= =是判断值是否相等,= = =是判断值及类型是否完全相等。 -
JavaScript是一门什么样的语言,它有哪些特点?
一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型 特点:1.简单性 2.动态性 3.跨平台性 4.安全性
-
JavaScript的数据类型都有什么?
1. 字符串类型 (string)
2. 数值类型 (Number)
3. 对象类型 (object)
4. 布尔类型 (boolean)
5. 空类型 (null)
6. 未定义类型 (undefined)
-
谈谈对this的理解
this表示当前对象,而它的指向是根据上下文来决定的,默认指向window对象 在这把它分为两类: 全局和局部 在全局中指向的对象只有window对象 在局部中,对象调用指向对象,构造函数中指向实例化对象
-
js继承方式及其优缺点
1.原型链继承 优点:简单,易于实现。 缺点: 创建子类实例时,无法向父类构造函数传参 2.构造函数继承 优点: 解决了子类实例共享父类引用属性的问题; 创建子类实例时,可以向父类构造函数传参; 可以实现多继承(call多个父类对象); 缺点: 只能继承父类的实例属性和方法,不能继承父类原型属性和方法 使用多后占用内存过大 3.组合继承 优点: 函数可复用; 可以继承实例属性/方法,也可以继承原型属性/方法; 既是子类的实例,也是父类的实例; 不存在引用属性共享问题; 缺点:内存浪费
-
同步和异步的区别?
同步,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。 异步,不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。
-
箭头函数
(a,b,c)==>{x} 型如这样的函数就是箭头函数
同等与:
function(a,b,c){
x;
}
注意:
箭头函数与普通函数并不完全相等, 箭头函数并没有自己的this关键字,对于普通函数的this指创建的对象, 直接调用的普通函数this代表window
箭头函数的this指的是上下文, 也就是包含箭头函数的外层函数, 如果箭头函数定义在全局范围内this指window本身
箭头函数不允许在形参列表和箭头之间换行,否则报语法错误
箭头函数与其他运算符在一起时, 可能由于解析顺序导致错误, 因而与其他运算符在一起时应该把箭头函数整体放在圆括号里