面试题
等数载海棠开吧
全部回复
仅看楼主
level 10
sky13nice 楼主
开发过程中遇到那些内存泄漏的情况,如何解决的?
内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。
1、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露.
<div id="myDiv">
<input type="button" value="Click me" id="myBtn">
</div>
<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.onclick = function(){
btn.onclick = null;
document.getElementById("myDiv").innerHTML = "Processing...";
}
</script>
2、闭包可以维持函数内局部变量,使其得不到释放,解决之道,将事件处理函数定义在外部,解除闭包
function bindEvent()
{
var obj=document.createElement("XXX");
obj.onclick=onclickHandler;
}
function onclickHandler(){
//do something
}
2018年04月09日 13点04分 1
level 10
sky13nice 楼主
2018年04月09日 13点04分 2
2018年04月16日 01点04分
level 10
sky13nice 楼主
iframe的优缺点
优点:
1. 解决加载缓慢的第三方内容如图标和广告等的加载问题
2. 并行加载脚本
缺点:
1. iframe会阻塞主页面的Onload事件
2. 没有语意
2018年04月09日 15点04分 3
level 10
sky13nice 楼主
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。
常用http状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 服务器异常
实现ajax:
ajax: function(url, fn) {
// 创建xhr
var xhr = new XMLHttpRequest();
// 监听xhr状态
xhr.onreadystatechange = function() {
// 监听状态
if (xhr.readyState === 4) {
// 监听返回状态码
if (xhr.status === 200) {
// 执行回调函数
fn(JSON.parse(xhr.responseText))
}
}
}
// 打开请求
xhr.open('GET', url, true);
// 发送数据
xhr.send(null);
}
2018年04月10日 02点04分 4
level 10
sky13nice 楼主
请描述一下cookies,sessionStorage和localStorage的区别
Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁
localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
2018年04月10日 03点04分 5
level 10
sky13nice 楼主
字符串反转,如将 '12345678' 变成 '87654321'
//思路:先将字符串转换为数组 split(),利用数组的反序函数 reverse()颠倒数组,再利用 jion() 转换为字符串
var str = '12345678';
str = str.split('').reverse().join('');
2018年04月10日 04点04分 6
level 10
sky13nice 楼主
关于this
1. 函数是否在 new 中调用(构造函数中)?如果是的话 this 绑定的是新创建的对象。
var bar = new foo()
2. 函数是否通过 call 、 apply (显式绑定)或者硬绑定调用?如果是的话, this 绑定的是
指定的对象。
var bar = foo.call(obj2)
3. 函数是否被某个上下文对象调用(隐式绑定)?如果是的话, this 绑定的是那个调用函数的对象。
var bar = obj1.foo()
4. 如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到 undefined ,否则绑定到
全局对象(window)。
var bar = foo()
foo()
2018年04月10日 07点04分 7
level 10
sky13nice 楼主
2018年04月11日 12点04分 8
是vue组件的生命周期
2018年04月22日 02点04分
level 10
sky13nice 楼主
beforecreate:实例化Vue对象之前做的事,例如加载动画
create:实例化创建完成,此时可以引用相关属性和方法了,这个阶段就可以请求数据了
beforeMount:挂在前,开始创建虚拟DOM准备渲染页面
mounted:页面渲染完成
beforeUpdate:组件状态更新前
update:组件状态更新后
beforeDestory、destoryed:分别为组件销毁前和销毁后
2018年04月13日 04点04分 9
level 10
sky13nice 楼主
@写一个函数,计算几个数的和
function sum() {
//定义两个变量 分别表示返回的结果和 需要计算的数的集合
var r = 0;
var arr = arguments;
//循环让这几个数相加
for(var i =0;i<arr.length; i++){
//定义变量用于保存当前循环到的值
var num = arguments[i];
//判断当前值是否为number类型
if(typeof num=='number'){
r +=num;
}
}
//函数一定要有返回值,才能看到结果
return r;
}
sum(1,2,3);
2018年04月13日 07点04分 10
level 10
sky13nice 楼主
// 在页面加载完成后,动态创建一个form表单 并在里面添加一个input框,输入值后以post方式提交到服务器
window.onload = function(){
var form = document.createElement("form");
document.body.appendChild(form);
//为表单设置method属性
form.setAttrbute("method", "post");
//为表单设置action属性
form.setAttrbute("action", "http://127.0.0.1/save.php");
//创建 input元素,追加到form 节点上
var input = document.createElement("input");
form.appendChild(input);
input.value = "jjj";
form.submit();
}
2018年04月13日 08点04分 11
level 10
sky13nice 楼主
Ajax 解决浏览器缓存问题
1、在URL后面加上一个随机数: "fresh=" + Math.random();
2、在URL后面加上时间搓:"nowtime=" + new Date().getTime();
2018年04月13日 15点04分 12
level 10
sky13nice 楼主
如何解决跨域问题:
jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面(http-proxy-middleware)
2018年04月13日 15点04分 13
level 10
sky13nice 楼主
★ ajax请求的时候get 和post方式的区别
get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。
post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。
★ 解释jsonp的原理,以及为什么不是真正的ajax?
Jsonp并不是一种数据格式,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签的src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术
★ ajax请求时,如何解释json数据? JSON.parse()
2018年04月13日 16点04分 14
level 10
sky13nice 楼主
javascript的本地对象,内置对象和宿主对象
本地对象:ECMAScript提供的对象,包括Array Object RegExp等可以new实例化的对象
内置对象:不可以实例化的本地对象,如 Gload Math
宿住对象:所有的非本地对象,所有的BOM和DOM对象都是宿主对象
2018年04月13日 16点04分 15
1 2 尾页