面试题整理

来源:互联网 发布:ios11降级后数据恢复 编辑:程序博客网 时间:2024/05/22 13:16

一:正则表达式

\作为转意,\后面的字符不按原来意义解释。如/a*/将匹配a,aa,加了/a\*/只能匹配a*

^匹配一个输入或一行的开头,/^a/匹配adfh 不匹配dsda

$匹配一个输入或一行的结尾,/a$/匹配 qewa 不匹配aeds

*匹配前面字符0次或多次,/ba*/将匹配b ,ba,baaa

+匹配前面字符1次或者多次,/ba+/将匹配ba.baa

?匹配前面字符0次或1次,/ba?/将匹配b,ba

(x)匹配x保存x在名为$1……$9的变量中

x|y匹配x或y

{n}精确匹配n次

{n,}匹配n次以上

{n,m}匹配n-m次

[xyz]字符集,匹配这个集合中的任一一个字符(或元字符)

[^xyz]不匹配这个集合中的任一字符

\d匹配一个数字字符 /\d/=/[0-9]/

\D匹配一个非数字字符,/\D/=/[^0-9]/

\n匹配一个换行符

\r匹配一个回车符

二:获取浏览器的url并且获取url中的参数和值

window.location.href;获取整个url字符串

window.location.port;获取url关联的端口号

window.location.protocol;获取url的协议部分

window.location.search;获取变量的值(截取等号后面的部分)

 function GetRequest() {   
    var url = location.search; //获取url中"?"符后的字串,包括?   
    var theRequest = new Object();   
    if (url.indexOf("?") != -1) {  
        var str = url.substr(1);   //substr(start,length)length可选,获取子串。
        strs = str.split("&");   
        for(var i = 0; i < strs.length; i ++) {  
            theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);   
        }   
    }   
    return theRequest;   
}   
  
var req = GetRequest();   
  
var from = req['from'];  
  
alert(from); 

三:数组去重方式

方式一:

Array.prototype.unique1=function(){

var n=[];//一个新的临时数组

for(var i=0;i<this.length;i++){//遍历当前数组

//如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面

if(n.indexOf(this[i] )== -1){

n.push(this[i]);

}

}

}

方式二:

Array.prototypr.unique2=function(){

var n={};//n为hash表

var r =[];//r为临时数组

for(var i=0;i<this.length;i++){

if(!n[this[i]]){//如果hash表中没有当前值

r.push(this[i]);//把当前数组的当前项放入数组中

n[this[i]]=true;//将当前数组的当前项存入hash表中

return r;

}

}

}

方式二比方式一快很多,方式一使用的是indexOf,方式二使用的是hash

四:js new 对象具体过程

function Foo(){}

var foo  = new Foo();

补补脑:

每个函数中都有一个叫prototype的属性,类型是object,即一个引用对象。

每个对象中都有一个叫_proto_的属性,类型也是object,也是一个引用对象

1.new操作符时,会马上开辟一块内存,创建一个空对象(并将this指向这个对象)

2.执行构造函数Foo(),对这个空对象进行构造(构造函数里有什么属性和方法都一一给这个空白对象配置上去,这就是为什么叫构造函数了)

3.给这个对象添加一个叫_proto_的属性,而且这个_proto_指向Foo()的prototype对象。换句话说_proto_=prototype

五:https和http(超文本传输协议)的区别

https协议需要ca申请证书,一般免费证书很少,需要交费。

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

http和https使用的是完全不同的连接方式用的端口号也不一样:前者是80;后者是443

http的连接很简单,是无状态的,https协议是有SSL+http协议构建的可进行加密传输,身份认证的网络协议,要比http协议安全

六:清除浮动

1.clear:both

2.父级div定义。伪类:after(IE8以上和非IE浏览器才支持:after)

 和zoom(可解决ie6,ie7浮动问题)

3.父级div定义overflow:hidden

4.父级div定义overflow:auto

5.父级div定义display:table

七:css选择器优先级

1.一般而言,选择器越特殊,它的优先级越高,也就是选择器指向的越准确,它的优先级越高。通常1表示标签名选择器,10表示类选择器,100表示id选择器。如.class span{color:red;}的选择器优先级是10+1就是11;而.class的优先级是10。

2.后代选择器的定为原则

浏览器css匹配不是从左到右,而是从右到左进行查找。如div#divBox  p  span.red{color:red;},浏览器的查找顺序:先查找html中所有class='red'的span元素,找到后,再找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。

如:经常遇到的问题

#id .class{clolr:red;} 但是不是显示成红色,而是id里面设置的颜色。就是因为id权重高于class权重。

八:js中实用的跨域方法原理详解

1.通过jsonp跨域

2.通过修改document.domain来跨子域

3.使用window.name来进行跨域

4.使用html5中新引进的window.postMessage方法来跨域传送数据。

九:ajax:中参数

1.dataType

预期服务器返回的数据类型。如果不指定,jquery将自动根据http包MIME信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,json就会生成一个javascript对象,而script则会执行这个脚本,随后服务器端返回的数据根据这个值解析后,传递给回调函数。可用值

"XML":返回XML文档,可用Jquery处理

"html":返回纯文本html信息;包含的script标签会在插入dom时执行。

"script":返回纯文本javascript代码,不会自动缓存结果。除非设置了“cache”参数。注意:在远程请求时(不在同一个域名下),所有post请求都将转为get请求。(因为将使用DOM的script标签来加载)

"json":返回JSON数据

"jsonp":JSONP格式。使用JSONP形式调用函数时,如“myurl?callback=?”jQuery将自动替换?为正确的函数名,以执行回调函数。

"text":返回纯文本字符串。

2.cache

ajax的url每次请求都会自己带上时间戳,如果cache设置为true,如果浏览器里面存在缓存,则直接获取的是缓存的,如果设置为false,则每次请求的时间戳都是 不一样,这样不会用到缓存。(如果加载js文件,每次都要重新去请求则会浪费很多资源,cache为true,如果浏览器存在相应文件的缓存,则直接获取的是浏览器的缓存。)




0 0
原创粉丝点击