前端面试题一(Javascript)
1、在web开发中,我们经常会用到cookie,那么如何设置cookie?对于性能的影响又是怎样的?
//存储cookie
function getCookie(c_name) {
if(document.cookie.length > 0) {
c_start = document.cookie.indexOf(c_name + "=")
if(c_start != -1) {
c_start = c_start + c_name.length + 1
c_end = document.cookie.indexOf(";", c_start)
if(c_end == -1) c_end = document.cookie.length
return unescape(document.cookie.substring(c_start, c_end))
}
}
return ""
}
//设置cookie
function setCookie(c_name, value, expiresdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiresdays);
document.cookie = c_name + "=" + escape(value) +
((expiresdays == null) ? "" : ";expires=" + exdate.toGMTString())
}
//检查cookie
function checkCookie() {
username = getCookie('username');
if (username!=null && username!="") {
alert("Welcome again" + username + '!');
} else {
username = prompt('Please enter your name:', "")
if(username!=null && username != "") {
setCookie('username', username, 365);
}
}
}
//清楚cookie
function clearCookie(c_name){
setCookie(c_name,"",-1);
}
</script>
</head>
<body onLoad="checkCookie()">
</body>
因为cookie会在浏览器和服务器之间进行传递,如果很大的话,会影响页面响应的时间。为了较少响应时间,要清除不必要的cookie,并且给cookie设置合适的域。
2、在进行大量字符串拼接操作的时候,采用哪种方法比较高效?
第一用连接符“+”把要连接的字符串连起来,如果只连接100个以下的字符串建议用这种方法最方便
第二以数组作为中介用 join 连接字符串,比加号消耗更少的资源,速度也更快
第三利用对象属性来连接字符串
3、’5’+3,[1,2]+[3,4],[1,2]+{a:1,b:2} 答案:’53’|1,23,4 | 1,2[Object,Object]
4、apply与call是做什么用的,有什么区别?
劫持另外一个对象的方法,继承另外一个对象的属性.
不过apply的参数列表是数组,call的参数列表是对象
5、proxy 方法接受一个已有的函数,并返回一个带特定上下文的新的函数。On方法动态内容绑定事件函数,与delegate功能相同
Ajax中如何指定callback函数名,如果jsonp的话
$.ajax({
type:"get",
async:false,
url:"/home/ReturnJson",
dataType:"jsonp",
jsonp:"callback",
jsonpCallback:"receive",
success:function(data){
alert(data.name);
}
eeror:function(){
alert("fail");
}
});