js⾯试题(持续更新)
js⾯试题
new操作符具体⼲了什么
1. 创建⼀个空对象,并且 this 变量引⽤该对象,同时还继承了该函数的原型
2. 属性和⽅法被加⼊到 this 引⽤的对象中
3. 新创建的对象由 this 所引⽤,并且最后隐式的返回 this
var obj ={};
obj.__proto__ = Base.prototype;
Base.call(obj)
javascript对象的⼏种创建⽅式
1. ⼯⼚模式
2. 构造函数模式
3. 原型模式
4. 混合构造函数和原型模式
5. 动态原型模式
6. 寄⽣构造函数模式
7. 稳妥构造函数模式
哪些操作会造成内存泄漏
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引⽤了每个对象的其他对象的数量。如果⼀个对象的引⽤数量为 0(没有其他对象引⽤过该对象),或对该对象的惟⼀引⽤是循环的,那么该对象的内存即可回收。
1. setTimeout 的第⼀个参数使⽤字符串⽽⾮函数的话,会引发内存泄漏。
2. 闭包
3. 控制台⽇志
4. 循环(在两个对象彼此引⽤且彼此保留时,就会产⽣⼀个循环)
js延迟加载的⽅式有哪些
1. defer和async
2. 动态创建DOM⽅式(创建script,插⼊到DOM中,加载完毕后callBack)
3. 按需异步载⼊js
null和undefined的区别
null是⼀个表⽰"⽆"的对象,转为数值时为0
undefined是⼀个表⽰"⽆"的原始值,转为数值时为NaN
当声明的变量还未被初始化时,变量的默认值为undefined
null⽤来表⽰尚未存在的对象,常⽤来表⽰函数企图返回⼀个不存在的对象
undefined表⽰ “缺少值”,就是此处应该有⼀个值,但是还没有定义。典型⽤法是:
1. 变量被声明了,但没有赋值时,就等于 undefined
jquery框架面试题2. 调⽤函数时,应该提供的参数没有提供,该参数等于 undefined
3. 对象没有赋值的属性,该属性的值为 undefined
4. 函数没有返回值时,默认返回 undefined
null表⽰“没有对象”,即该处不应该有值。典型⽤法是:
1. 作为函数的参数,表⽰该函数的参数不是对象
2. 作为对象原型链的终点
jQuery对象与js对象互相转换
jQuery对象转换成js对象:[index]和.get(index)
()把DOM对象包装起来,就可以获得⼀个jQuery对象了。
js对象转成jQuery对象:对于已经是⼀个js对象,只需要⽤(js对象)
while循环、do…while与for循环的⽤法和区别
1.while语法:
while(循环条件){
循环主体;
}
2.do…while语法:
do{
循环体;
}while(循环条件)
do-while与while循环的不同之处在于:它先执⾏循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终⽌循环。因此, do-while循环⾄少要执⾏⼀次循环语句。
继承的 6 种⽅法
1. 原型链继承
2. 借⽤构造函数继承
3. 组合继承(原型+借⽤构造)
4. 原型式继承
5. 寄⽣式继承
6. 寄⽣组合式继承
http状态码有那些?分别代表是什么意思?
1xx(临时响应)
100: 请求者应当继续提出请求。
101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进⾏切换。
2xx(成功)
200:正确的请求返回正确的结果
201:表⽰资源被正确的创建。⽐如说,我们 POST ⽤户名、密码正确创建了⼀个⽤户就可以返回 201。
202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求。
3xx(已重定向)
300:请求成功,但结果有多种选择。
301:请求成功,但是资源被永久转移。
303:使⽤ GET 来访问来获取资源。
304:请求的资源并没有被修改过
4xx(请求错误)
400:请求出现错误,⽐如请求头不对等。
401:没有提供认证信息。请求的时候没有带上 Token 等。
402:为以后需要所保留的状态码。
403:请求的资源不允许访问。就是说没有权限。
404:请求的内容不存在。
5xx(服务器错误)
500:服务器错误。
501:请求还没有被实现。
操作获取和设置 cookie
// 创建cookie
function setCookie(name, value, expires, path, domain, secure){
var cookieText =encodeURIComponent(name)+'='+encodeURIComponent(value);
if(expires instanceof Date){
cookieText +='; expires='+ expires;
}
if(path){
cookieText +="; path="+ path }
if(domain){
cookieText +='; domain='+ domain;
}
if(secure){
cookieText +='; secure';
}
}
// 获取cookie
function getCookie(name){
var cookieName =encodeURIComponent(name)+'=';
var cookieStart = kie.indexOf(cookieName);
var cookieValue =null;
if(cookieStart >-1){
var cookieEnd = kie.indexOf(';', cookieStart);
if(cookieEnd ==-1){
cookieEnd = kie.length;
}
cookieValue =kie.substring(cookieStart + cookieName.length, cookieEnd));
}
return cookieValue;
}
// 删除cookie
function unsetCookie(name){
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论