撩课-Web大前端每天5道面试题-Day5
时间:2018-12-06
本文章向大家介绍撩课-Web大前端每天5道面试题-Day5,主要包括撩课-Web大前端每天5道面试题-Day5相关应用实例、知识点总结和注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.写一个深度克隆方法(es5)?
/** * 深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj 目标对象 */ function deepCopyObj2NewObj(fromObj, toObj) { for(var key in fromObj){ // 1. 取出键值对 var fromValue = fromObj[key]; // 2. 检查当前的属性值是什么类型 if(!isObj(fromValue)){ // 如果是值类型,那么就直接拷贝赋值 toObj[key] = fromValue; }else { // 如果是引用类型, // 那么就再调用一次这个方法, // 去内部拷贝这个对象的所有属性 var tempObj = new fromValue.constructor; console.log(fromValue.constructor); deepCopyObj2NewObj(fromValue, tempObj); toObj[key] = tempObj; } } } /** * 辅助函数, 判断是否是对象 * @param {object}obj * @returns {boolean} */ function isObj(obj) { return obj instanceof Object; }
2. es6中let,const,var的区别是什么?
var :声明全局变量; let :声明块级变量,即局部变量, 定义后可以修改; const :用于声明常量,就是定义后 不能再修改值或者引用值的常量, 也具有块级作用域
3. 对数组[1,2,3,8,2,8]进行去重,es5或者es6方法?
es四种方式: Array.prototype.unique1 = function() { // 1. 定义数组 var temp = []; // 2. 遍历当前数组 for(var i = 0; i < this.length; i++) { // 3.如果当前数组的第i已经保存进了临时数组, // 那么跳过,否则把当前项push到临时数组里面 if (-1 === temp.indexOf(this[i])) { temp.push(this[i]); } } return temp; }; Array.prototype.unique2 = function() { //1. hash为hash表,r为临时数组 var hash = {}, temp=[]; // 2.遍历当前数组 for(var i = 0; i < this.length; i++) { // 3. 如果hash表中没有当前项 if (!hash[this[i]]) { // 4.存入hash表 hash[this[i]] = true; // 5.把当前数组的当前项 // push到临时数组里面 temp.push(this[i]); } } return temp; }; Array.prototype.unique3 = function() { var n = [this[0]]; for(var i = 1; i < this.length; i++){ if (this.indexOf(this[i]) === i) { n.push(this[i]); } } return n; }; Array.prototype.unique4 = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++) { if( this[i] !== re[re.length-1]) { re.push(this[i]); } } return re; }; es6: Array.prototype.unique = Array.prototype.unique || function () { return [...new Set(this)]; };
4. 说说对es6中=>的理解?
箭头函数相当于匿名函数, 并且简化了函数定义, 箭头左边是参数, 右边是返回值。 箭头函数看上去 是匿名函数的一种简写, 但实际上,箭头函数和 匿名函数有个明显的区别: 箭头函数内部的this是词法作用域, 由上下文确定。
5. 点击一个按钮,发出ajax请求,如何防止用户在此请求方式返回之前再次点击?
// 点击提交按钮的时候, // 把这个提交这个处理函数给解绑掉, // 请求完成的时候在绑定回来 function clickHandler(){ $(this).unbind('click', clickHandler); $.ajax({ url : 'url', dataType : 'json', type : 'post', success : function (data) { if (data.success) { //提交成功做跳转处理 } else { //处理失败,重新绑定点击事件 $(self).click(clickHandler); } } }); } $('#itlike').click(clickHandler); // 可以点击后让按钮不可用, // 如果提交失败可以再次设置为可用 // 1.让按钮不可用 $("#itlike").attr("disabled","disabled"); $.ajax({ url : 'url', dataType : 'json', type : 'post', success : function (data) { if (data.success) { // 提交成功做跳转处理 } else { // 处理失败,重新绑定点击事件 // 让按钮可用 $("#itlike").removeAttr("disabled"); } } });
- 译《ES6的6个小特性》
- 微信小程序从使用到分析快速解析
- andriod游戏音效
- JavaScript模块探索
- 数据层扩展包EFCachingProvider 总结
- Mac配置Maven
- FileSystemWatcher 导致Mono ASP.NET应用程序CPU使用率比较高
- 网卡收包流程
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Terminal &zsh &oh-my-zsh配置
- 【Python量化投资】基于网格优化、遗传算法对CTA策略进行参数优化
- 将我的 Windows Phone 应用程序更新到 Windows Phone 8
- 绑定子类的泛型基类,反模式?
- 给创业码农的话--如何提升开发效率
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法