ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
1、变量提升遇到的一些简单code题 2、说一下对闭包的理解,以及你在什么场景下会用到闭包 3、说一下你对原型与原型链的了解度,有几种方式可以实现继承,用原型实现继承有什么缺点,怎么解决 4、iframe的缺点有哪些 5、Ajax的原生写法 if(window.XMLHttpRequest) { xml = new XMLHttpRequest(); } else { xml = new ActiveXObjects('Microsoft.XMLHttp'); } xml.onreadystatechange = function() { if(xml.readyState == 4 && xml.status == 200) { xml.responseText; } } xml.open('GET', 'http://www.baidu.com', 'true'); xml.send(); 6、为什么会有同源策略 浏览器的同源策略导致的。默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致。 7、前端处理跨域有没有遇到过,处理跨域的方式有哪几种方式去解决 AJAX、CORS、JSONP、flash // JSONP实现 var trans = {}; trans.JSONP = function(data) { var script = document.createElement("script"); var head = document.getElementsByTagName("head")[0]; script.src = `${data.url}?callback=${data.callback}`; head.appendChild(script); } trans.JSONP({ url: "http://www.baidu.com", callback: "show" }) 8、怎么判断两个对象是否相等 function equals( x, y ) { var in1 = x instanceof Object; var in2 = y instanceof Object; if(!in1||!in2){ return x===y; } if(Object.keys(x).length!==Object.keys(y).length){ return false; } for(var p in x){ var a = x[p] instanceof Object; var b = y[p] instanceof Object; if(a&&b){ return equals( x[p], y[p]); } else if(x[p]!==y[p]){ return false; } } return true; } alert(equals({a:1},{a:1}));//true 9、代码实现一个对象的深拷贝 10、从发送一个url地址到返回页面,中间发生了什么 11、说下工作中你做过的一些性能优化处理 ES6 1、箭头函数中的this指向谁 2、如何实现一个promise,promise的原理,以及它的两个参数是什么 3、promise中第二个参数的reject中执行的方法和promise.catch()都是失败执行的,分别这么写有什么区别,什么情况下会两个都同时用到 5、map和set有没有用过,如何实现一个数组去重,map数据结构有什么优点 var a = 10; var foo = { a: 20, bar: function () { var a = 30; return this.a; } }; console.log( foo.bar(), // 1. 20 (foo.bar)(), // 2. 20 (foo.bar = foo.bar)(), // 3. 10 (foo.bar, foo.bar)() // 4. 10 ); ## 装饰器 'use strict'; var count = 0; var oldParseInt = parseInt; // 保存原函数 window.parseInt = function () { count += 1; return oldParseInt.apply(null, arguments); // 调用原函数 }; parseInt('10'); parseInt('20'); parseInt('30'); console.log('count = ' + count); // 3