1.js构成了ECMAScript,它描述了语言的语法和基本对象。文档对象模型(DOM),它描述了处理Web内容的方法和接口。浏览器对象模型(BOM),它描述了与浏览器交互的方法和接口。2.js代码在哪里可以运行主要运行在浏览器中,你看到的网页大多都包含Javascript。一部分运行在服务器端,主要用于生成网页代码。当然其他的东西也可以做,但是比较少。还有一些用Javacript开发的软件(电脑版和手机版都有)。3、js中有哪些内置函数和对象:ArrayObjectDateStringNumberBoolean...RegExp函数:slice()splice()join()toString()sort()concat()reverse()isNaN()是有限的()4。什么是深拷贝和浅拷贝,浅拷贝是怎么实现的?两个变量指向同一个内存地址5.css3布局机制显示:改变元素的默认特性inline/block/inline-blockfloatinglayout:浮动元素的特性(outofdocumentflow)float:left/right/none定位layout:position:static:静态定位(默认文档流)absolute:绝对定位relative:相对定位fixed:固定定位类似于绝对定位sticky:粘性定位(比如经常使用左右导航栏)relative+fixedflexlayout:stretchboxContainer,flexibleboxelementgridlayout(第三方布局机制,浮动布局或定位布局封装的企业级布局机制)bootstrap6.列出数组实例可以调用的十个属性和方法Array.prototype.pop():Delete返回数组的最后一个元素。Array.prototype.push():向数组末尾添加一个或多个元素,并返回数组的新长度。Array.prototype.reverse():反转数组中元素的顺序,即原来的第一个变成最后一个,原来的最后一个变成第一个。Array.prototype.shift():删除数组的第一个元素并返回这个元素。Array.prototype.sort():对数组进行排序,返回排序后的数组。Array.prototype.splice():在数组的任意位置添加或删除任意数量的元素。Array.prototype.unshift():在数组开头添加一个或多个元素,并返回数组的新长度。Array.prototype.concat():返回一个由当前数组和其他几个数组或几个非数组值组成的新数组。Array.prototype.join():将所有数组元素连接起来形成一个字符串。Array.prototype.slice():从当前数组中提取一段元素,组成一个新的数组。Array.prototype.toString():返回一个由所有数组元素组成的字符串,当然还有一些其他的字符串。Array.prototype.toLocaleString():返回由所有数组元素组成的本地化字符串。Array.prototype.indexOf():返回数组中第一个等于指定值的元素的索引,如果没有找到这样的元素,则返回-1。Array.prototype.lastIndexOf():返回数组中最后一个等于指定值的元素的索引,如果没有找到这样的元素,则返回-1。Array.prototype.forEach():对数组中的每个元素执行一次回调函数。Array.prototype.every():如果数组中的每个元素都满足测试函数则返回真,否则返回假。Array.prototype.some():如果数组中至少有一个元素满足测试函数则返回真,否则返回假。Array.prototype.filter():将filter函数中所有返回true的数组元素放入一个新数组中返回。Array.prototype.map():返回一个由回调函数的返回值组成的新数组。Array.prototype.reduce():从左到右对每个数组元素执行一个回调函数,并将暂存器中上一个回调函数的返回值放到下一个回调函数中,并返回上一个回调函数的返回值功能。7.列举十个String类型可以调用的属性和方法并解释它们的含义length返回字符串的长度charAt(i)返回指定位置的字符charCodeAt()返回指定字符的字符编码concat拼接字符串slice()截取字符串(开始位置、结束位置)不包括结束位置的字符substring()截取字符串(开始位置、结束位置)不包括结束位置的字符substr()截取字符串(开始位置、个数截取的字符)trim()去掉前后所有空格,返回结果toLowerCase()转为小写toUpperCase()转为大写indexOf()从前到后查找指定字符的位置lastIndexOf()查找stringfrombacktofrontPosition,可以有第二个参数,表示在字符串中开始查找的位置。8.写出10个Linux常用命令并解释完整格式查看所有进程ps-ef清除屏幕内容清除列表历史命令history查看当前用户我是谁切换到超级管理员状态su切换到用户su用户名切换,临时提升执行命令时的权限sudo其他命令查看当前路径pwd切换到指定目录cd文件名/文件夹名查看所有文件和隐藏文件ls-a查看除.和..ls-长格式列出所有文件和目录ls-l9。写5条常用的git命令并讲解gitinit初始化本地文件夹为本地git仓库gitclonexxx.git将远程仓库xxx.git下载的内容克隆到本地,就是生成本地仓库。gitpulloriginmaster更新代码,提交代码前一定要更新代码gitadd。将所有要提交的文件添加到缓存区,liuyr.txtgitcommit-m'commentforsubmission'将缓存区的内容提交到本地仓库gitpushoriginmaster将本地仓库的内容推送到远程仓库gitremote-v查看当前本地仓库绑定了哪些远程仓库gitremoteaddoriginxxx.git将本地仓库绑定到远程仓库xxx.git并给远程仓库命名为originitremoteremoveorigin用当前本地仓库绑定的origin名称。10.解释什么是argumentsargument对象包含了函数调用的参数数组,这样可以很容易的找到最后一个参数的值。arguments是一个类似于数组的对象,对应于传递给函数的参数。11.如何创建对象?创建对象有几种方法?单个对象创建构造方法newObject()对象字面量方法{}批量对象创建工厂模式,所有创建的对象都是Object类型构造方法,实例可以分类,但是方法冗余除了原型模式,属性和方法所有的实例都在构造函数的原型对象中,这对每个实例私有的属性和方法不友好。构造函数+原型模式(组合模式),实例私有属性和方法放在构造函数中,实例公共属性和方法放在原型对象中。12.重构forEachfiltermapeverysome//someArray.prototype.mySome=function(fun,obj){for(vari=0;i1;//短路原理},{name:'zhangsan'})console.log(res);//forEachArray.prototype.myforEach=function(callback){//callback,表示这个参数不是普通变量,而是一个回调函数for(vari=0;i1;//短路原理},{name:'zhangsan'})console.log(res);//filterArray.prototype.myFilter=function(fun,obj){varres=[];对于(vari=0;i2;//新建数组},{name:'zhangsan'})console.log(res);//mapArray.prototype.myMap=function(fun,obj){varres=[];对于(vari=0;iarr[i+1]){vartemp=arr[i];arr[i]=arr[i+1];arr[i+1]=温度;}}}}18.什么是闭包?一个闭包的作用,一个闭包的优缺点。闭包是一个函数,它可以访问另一个函数范围内的变量。闭包是一个特殊的对象。函数内部定义的函数的优点和作用:一是可以读取函数内部的变量,二是将这些变量的值时刻保存在内存中。缺点:1、由于闭包会导致函数中的变量存放在内存中,内存消耗非常大,所以闭包不能滥用,否则会导致网页出现性能问题,并可能造成内存泄漏在IE中。这是IEBUG。2.闭包会在父函数外改变父函数内变量的值。所以,如果你把父函数当作一个对象(object),把闭包当作它的公共方法(PublicMethod),把内部变量当作它的私有属性(privatevalue),那么你一定要注意不要随意更改父函数内部变量的值。多个子函数的作用域同时指向父函数,完全共享。所以当父变量对象被修改时,所有的子函数都会受到影响。19、js的特点JavaScript是一种解释型脚本语言,JavaScript是在程序运行过程中逐行解释的。JavaScript是一种基于对象的脚本语言。JavaScript是基于Java的基本语句和控制流进行的简单紧凑的设计,因此是学习Java的一个很好的过渡。它的变量类型采用弱类型,不使用严格数据类型。JavaScript是动态的,它可以直接响应用户或客户端的输入,而无需通过Web服务程序。它以事件驱动的方式响应用户。JavaScript依赖于浏览器本身,与运行环境无关,只要能运行浏览器的电脑和支持JavaScript的浏览器都能正确执行。从而实现了“一次编写,走遍世界”的梦想。JavaScript是一种安全语言,不允许访问本地硬盘,不能在服务器存储数据,不允许修改和删除网络文件,只能通过浏览器实现信息浏览或动态交互。从而有效防止数据丢失。20、js的基本数据类型有String、Number、Boolean、Null、Undefined、Symbol。21.写出5个可以被Math调用的方法。Math.floor()向下取整Math.round()向上取整Math.random()返回一个大于0小于1的随机数[0,1)abs(num)返回num的绝对值exp(num)返回Math.Elog(num)返回num的自然对数pow(num,power)返回num的幂sqrt(num)返回num的平方根scos(x)返回x的反余弦asin(x)返回xatan(x)的反正弦返回x的反正切atan2(y,x)返回y/x的反正切cos(x)返回x的余弦sin(x)返回x的正弦tan(x)返回x的正切值22.调用函数有几种方法,解释一下它们的区别?方法调用方式:先定义一个对象,然后在对象的属性中定义方法,通过myobject.property执行方法,this引用当前myobject对象。函数调用方式:定义一个函数,设置一个变量名来保存这个函数,然后this指向window对象。构造函数调用方式:定义一个函数对象,在对象中定义属性,在其原型对象中定义方法。使用原型方法时,必须实例化对象才能调用其方法。apply,callmode23.==和===有什么区别?==当两边的值类型不同时,先进行类型转换为相同的类型,然后比较值是否相等。只要数值相等,就可以为真。===没有进行类型转换,不同类型的结果一定是不相等的。不仅要求值相等,还要求类型相同。24.如何在DOM中添加、插入、移除、复制和获取节点appendChild方法接受一个节点对象作为参数,将其作为最后一个子节点插入到当前节点中。该方法的返回值是插入文档的子节点。insertBefore方法用于将节点插入到父节点内的指定位置。removeChild方法接受一个子节点作为参数,用于从当前节点中移除子节点。返回值是移除的子节点。replaceChild方法用于用新节点替换当前节点的子节点。cloneNode()方法返回调用该方法的节点的副本。cloneNode()进行浅拷贝,cloneNode(true)进行深拷贝。document.getElementById(id)通过元素id查找元素document.getElementsByTagName(name)通过标签名查找元素document.getElementsByClassName(name)通过类名查找元素document.querySelector()返回匹配文档中指定的CSS选择器document.querySelectorAll()的第一个元素是HTML5中引入的新方法,它返回文档中匹配CSS选择器的所有元素节点的列表。25.谈谈你对原型和原型链的理解?每个构造函数都有一个原型对象,对应的实例可以调用原型对象中的方法和属性。实例的原型默认为其构造函数的原型对象。原型链继承可以通过原型来完成。可以通过_proto__访问对象的原型,可以通过Object.setPrototypeOf和Object.getPrototypeOf设置或获取原型。26.什么是ajax?你如何在开发中使用ajax?Ajax是异步JavaScript和XML。用于异步请求。浏览器可以向服务器发送ajax请求以部分刷新页面。使用ajax:原生ajax,jQuery封装ajax,单独http封装第三方库axiosnativeajax:varhttpRequest=newXMLHttpRequest();//建立连接httpRequest.open('get','http://47.106.244.1:8099/mana...');//发送请求httpRequest.send();//接受响应httpRequest.onreadystatechange=function(){//当http请求完成,状态为200时,表示请求成功if(httpRequest.readyState===4&&httpRequest.status===200){//获取响应数据console.log(httpRequest.responseText);}if(httpRequest.readyState===4&&httpRequest.status===500){console.log('Error:'+httpRequest.responseText);}}27.解释引用传递和值传递之间的区别。值传递是指方法中基本数据类型的传递,引用传递是指方法中传递的引用数据类型。值传递传递的是一个值,而引用传递传递的是一个对象。28.js中如何监听对象中属性的变化varobj={name:"terry",age:1}Object.defineProperty(obj,"age",{configurable:true,set(){},get(){}})obj.age++;//给obj.age赋值时,会调用set方法,达到改变静态年龄值的目的29.解释RegExp.prototype.test()和String.prototype.search()的区别和相同点anddifferences用于检测字符串中是否有满足正则表达式的内容test()由正则表达式对象调用,支持全局搜索search()由字符串调用,不支持全局搜索30.css选择器优先级是如何计算的?由三个因素决定,权限,属性值,顺序决定权限:规则后加!important属性值:1000100个id选择器在style属性中声明10个类选择器,伪类选择器1个元素选择器,伪元素选择器顺序:当属性值相同,后者覆盖前者31.CSS盒模型简介CSS盒模型分为W3C标准盒(内容盒)模型和IE盒(边框盒)模型。框模型由内容区域、填充区域、边框区域和边距区域组成。盒子模型转换使用box-sizing属性。属性值content-box代表W3C标准盒模型,即设置的width和height为内容区域的宽高,属性值border-box代表IE盒模型,即设置的width和高度是盒子。宽度和高度。32.typeof返回值numberstringbooleanundefinedfunctionobjectNaN