1.js默认阻止时间冒泡的事件:
1) event.stopPropagation()
阻止事件冒泡的方法,不让时间向document上蔓延,但是默认事件仍然会执行
2) event.preventDefault()
阻止默认事件的方法
3) return false;
会同时阻止事件冒泡也会阻止默认事件2.逻辑代码,可以自己打印输出看看哦,答案在评论处
var a = [1,2];
var b = a.concat([3,4,[5,6]]);
1、请问数组b的长度是几?var data = [];
for(var i = 0;i<3;i++){
data[i] = function(){
console.log(i);
}
}
2、请问data[0] = ?
data[1] = ?
data[2] = ?var z = 10;
function foo(){
console.log(z);
}
(function(funArg){
var z = 20;
funArg();
})(foo)
console.log(z); //3、z=?function fact (num){
if(num<=1){
return 1
}else{
return num*arguments.callee(num-1)
}
}
var anotherFact = fact;
fact =null
console.log(anotherFact(4));//4、(anotherFact(4)?
3.这里遇到了一个我这个小白看不懂的地方:arguments.callee
- 首先,arguments是什么?
- arguments是函数调用时,创建的一个类似的数组但又不是数组的对象,并且它存储的是实际传递给函数的参数,并不局限于函数声明的参数列表。
- arguments.callee是指向参数arguments对象的函数,获取当前函数的主体,在哪个函数中运行,就代表哪个函数,一般用于匿名函数中。
4、call和Apply的区别:
- 每个函数都包含非继承而来的方法:call()和apply()
- 定义:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。
call:调用一个对象的一个方法,用另一个对象替换当前对象。
- 相同点:
- 都是在特定的作用域中调用函数,等于设置函数体内的this对象的值,以扩充函数运行的作用域。
- 区别:
- apply():最多只能有两个参数:函数运行的this对象和参数数组。
- 如果argArray不是一个有效数组或不是arguments对象,那么将导致一个
TypeError,如果没有提供argArray和thisObj任何一个参数,那么Global对象将用作thisObj。
语法:apply([thisObj [,argArray] ]);
- call():第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。
- call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj。
语法:call([thisObject[,arg1 [,arg2 [,...,argn]]]]);
5.浏览器的事件流:
- 事件冒泡
- 事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点
- 事件捕获
- 事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。事件捕获的用意在于在事件到达预定目标之前就捕获它
- DOM事件流
- 处于捕获阶段往事件冒泡阶段之间
6、提高web页面性能
- 减少http请求:
- 图片加载也会产品http请求,所以建议尽量减少使用网络图片,如果图片比较多, 可以使用字体图标
- 使用CDN地址:
- CDN(内容发布网络)是一组分布在多个不同地理位置的Web服务器,用于更加有效地向用户发布内容。在优化性能时,向特定用户发布内容的服务器的选择基于对网络慕课拥堵的测量。
- CDN还可以进行数据备份、扩展存储能力,进行缓存,同时有助于缓和Web流量峰值压力。
- 将样式表放在头部
- 减少页面首屏出现的时间,使页面内容逐步呈现,改善用户体验,防止“白屏”。能够尽快显示内容,为用户提供可视化的回馈,这对网速慢的用户来说是很重要的
- 将脚本放在底部
- 和样式表相同,放在底部会减少首屏出现的时间。js的下载和执行会阻塞Dom树的构建(严谨地说是中断了Dom树的更新),所以script标签放在首屏范围内的HTML代码段里会截断首屏的内容
- 避免CSS表达式
- CSS表达式是动态设置CSS属性的一种强大并且危险的方式,它受到了IE5以及之后版本、IE8之前版本的支持。
- 使用外部JavaScript和CSS
- 内联脚本或者样式可以减少HTTP请求,按理来说可以提高页面加载的速度。然而在实际情况中,当脚本或者样式是从外部引入的文件,浏览器就有可能缓存它们,从而在以后加载的时候能够直接使用缓存,而HTML文档的大小减小,从而提高加载速度。
- 定义:
- https:是以安全为目标的HTTP的通道,简单讲是HTTP的安全版。HTTPS的安全是以SSL为基础,因此加密的详细内容就需要SSL。
- http:超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
- 区别:
- https:https协议需要到ca申请证书,一般免费证书很少,需要交费。https 则是具有安全性的ssl加密传输协议。
- http:http是超文本传输协议,信息是明文传输。