博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次前端笔试
阅读量:5092 次
发布时间:2019-06-13

本文共 2785 字,大约阅读时间需要 9 分钟。

1、写出元素垂直居中的方法

方法一:在不知道自己高度和父元素高度的情况下,利用绝对定位

父元素position:relative;

子元素position:absolute;top:50%;transform:translateY(-50%);

方法二:知道子元素高度的情况下,利用绝对定位

父元素position:relative;

子元素position:absolute;top:50%;left:50%;margin-left和margin-top分别为宽高的负一半。

方法三:设置height和line-height为相同的值,但是这只应用于单行文本

2、margin越界的解决方法

方法一:父元素设置border

方法二:父元素设置padding-top

方法三:父元素设置overflow:hidden

方法四:父元素设置伪类:before{

                                                content:'';

                                                display:table;

                                          }

3、简述box-sizing的属性

在说box-sizing之前先说下盒模型,盒模型分两种,IE盒模型和W3C盒模型。

IE盒模型:content内容包括了padding和border

W3C盒模型:content内容不包含其他两部分

box-sizing:content-box|border-box|padding-box

content-box(默认值):宽度不包含padding和border

border-box:宽度包含padding和border

padding-box:宽度包含padding

4、简述对闭包的理解

闭包就是函数中的函数,里面的函数可以访问外面函数的变量。

闭包的作用:1)、使用闭包可以访问函数外的变量

                     2)、可以使变量长期保存在内存中,生命周期比较长。

闭包要注意的地方:1)、闭包不能滥用,否则会导致内存泄漏,影响网页的性能

                                2)、闭包使用完之后,要立即释放资源

5、简述几种本地存储,并写出其区别

cookie、sessionStroge、localStroge

共同点:都是保存在浏览器中,且都是同源的

区别:

1)、cookie在浏览器和服务器间来回传递

         sessionStroge和localStrige不会自动把数据发送给服务器,仅用于本地保存。

         cookie还有路径(path)的概念,可以限制cookie只属于某个路径下。

2)、存储大小限制不同

         cookie数据不能超过4k

         sessionStroge和localStrige虽然也有限制,但可以达到5M以上

3)、数据有效期不同

         cookie只在设置的cookie过期之前有效,即使窗口或浏览器关闭

         sessionStroge只在当前浏览器关闭之前有效

         localStroge不管浏览器关闭与否,数据永久保存

4)、作用域不同

         cookie数据在所有同源窗口中都是共享的

        sessionStroge在不同浏览器窗口不共享,即使是同一个页面

6、数组去重

1         function test(arr){2             var temp=[];3             for(var i=0;i

7、一个ul包含10个li,实现点击对应的li,输出其内容。

方法一:利用this

1         var myul = document.getElementsByTagName("ul")[0];   2         var li = myul.getElementsByTagName("li");   3         function foo(){ 4             for(var i=0;i

方法二:事件委托

1 var myul = document.querySelector('ul');   2 var list = document.querySelectorAll('ul li');   3    4 myul.addEventListener('click', function(ev){   5     var ev = ev || window.event;   6     var target = ev.target || ev.srcElemnt;   7    8     for(var i = 0, len = list.length; i < len; i++){   9         if(list[i] == target){  10             alert(target.innerHTML);  11         }  12     }  13 });

8、JS实现深拷贝

 JS中数据类型分为基本数据类型(null、undefined、number、string、boolean)和引用类型(object、array、function)。

基本类型存放在栈内存中,引用类型存放在堆内存中。

栈内存存放基本类型的变量,堆内存存放new出来的变量。

浅拷贝就是将直接复制,复制前后前后的两个对象指向同一个内存地址,对其中一个进行操作,另一个也会发生同样的变化。他们只是不同的指针指向了同一块内存。

深拷贝则是开辟了一个新的内存地址,把其内容完完全全复制到新的内存中,之后对这个新对象的任何操作都不会影响到原先对象(既两边的操作都不会影响彼此),他们两个成了完全独立的对象

对于基本类型的变量可以进行浅拷贝,但对于引用类型的变量就得用深拷贝。

可以通过遍历+递归实现深拷贝

1 function deepClone ( obj ) { 2     if( typeof obj != "object" ){ 3         return obj ; 4     }   5  6     var newObj = obj.constructor === Array ? [] : {};  //开辟一块新的内存空间 7  8     for( var i  in  obj ) { 9         newObj [ i ] = deepClone ( obj [ i ] );                 //通过递归实现深层的复制 10     }11 12   return newObj;13 }

此外,还可以通过使用一些框架或库里的方法来完成深拷贝

比如jquery里的extend()方法:extend(deep,object)     //第一个参数为可选参数,默认为false,如果传入true,则实现的就是深拷贝

转载于:https://www.cnblogs.com/endlessmy/p/8506108.html

你可能感兴趣的文章
offset Dimensions 详解
查看>>
容量规划的一些探讨与实践
查看>>
wamp环境下php命令运行时出现错误:无法启动此程序,因为计算机中丢失OCI.dll。尝试重新安装该程序以解决此问题...
查看>>
组合数取模
查看>>
objective-c和java下解析对象类型和数组类型JSON字符串
查看>>
Lotto--poj2245
查看>>
91. Decode Ways
查看>>
246. Strobogrammatic Number
查看>>
2.5 浮点型数值
查看>>
[ Talk is Cheap Show me the CODE ] : jQuery Mobile页面布局
查看>>
666的vue.mixin
查看>>
bbs小项目整理(五)(登录模块的完成)
查看>>
微信小程序入门
查看>>
[Markdown]纯文本标记语言MarkdowPad2--MD语法知识
查看>>
8岁小学生表白遭拒:被一部iPhone打败
查看>>
解决git 命令出现end问题
查看>>
20169217 《Linux内核原理与分析》 第十一周作业
查看>>
{面试题4: 替换空格}
查看>>
Centos 03 基础命令
查看>>
cNoteSetColor_命令窗口颜色设置
查看>>