面试之js篇——基础题

1. 介绍js的基本数据类型? 介绍js有哪些内置对象?
2. 说几条写js的基本规范?
3. js原型、原型链?有什么特点?
4. js如何实现继承?
5. js继承的几种实现方式?
6. js创建对象的几种方式?
7. new操作符具体做了什么?
8. 谈谈对this对象的理解 ?
9 .document.load和$(document).ready() 的区别?
10. 什么是闭包,为什么要用它?谈到闭包,就会涉及到作用域及作用域链?

    

11. Ajax是什么?如何创建一个Ajax?
12. Ajax过程?ajax和jsonp的区别?
13. json的作用、用途及设计结构?
14. get和post的区别?何时使用post?
15. js函数调用的方式?
16. call()和apply() 的区别和作用?
17. null和undefined的区别?
18.数组方法pop() push() unshift() shift()?
19.split() join()的区别?
20.编写数组去重的方法?
答案:1.js基本数据类型:Number、String、Boolean、null、Undefind。

             Object是js中所有对象的父对象,数据封装类对象:Object、Array、Boolean、Number和String , 其他对象:function、Argument、Math、Date、Error、RegExp。

          2.基本规范:1、不要在同一行声明多个变量 2、不要使用!==和===来比较ture/false或数值3、不要使用全局函数 4、函数不应该有时候有返回值,有时候没有 

                               5、if语句、for循环必须使用大括号 6、for-in循环的变量,应该使用var关键字明确限定作用域,避免作用域污染

          3.每一个js对象都有一个原型对象,这个对象在不同的解释器下的实现不同,比如在firefox下,每个对象都有一个隐藏的_proto_属性,这个属性就是“原型对象”的引用。

             原型链:当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找,这个prototype有会有自己的prototype,于是一直找下去,这就是原型链。

             特点:js对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本,当我们修改原型时,与之相关的对象也会继承这一变化。

          4. 构造继承、原型继承、实例继承、拷贝继承。原型prototype机制或apply和call方法去实现较简单,构造函数与原型结合。

          5.构造函数的继承,非构造函数的继承。

          6.Js创建对象简单的来说,无非就是使用内置对象或各种自定义对象,还有json。

             1.对象字面量的方式 2.用function来模拟无参的构造函数 3.用function来模拟有参构造函数来实现(用this关键字定义构造的上下文属性)

             4.用工厂方式来创建(内置对象)5.用原型方式来创建 6.用混合方式来创建

          7.  1)创建一个空对象,并且this变量引用该对象,同时还继承该函数的原型。

               2)属性和方法被加入到this引用的对象中。

               3)新创建的对象由this所引用,并且最后隐式的返回this。

         8.1).this总是指向函数的直接调用者(而非间接调用者)。 2).如果有new关键字,this指向new出来的那个对象。

             3).在事件中,this指向触发这个事件的对象,特殊的是,IE的attachEvent的this是指向全局对象window。

         9.1)document.onload在结构和样式加载完才执行js 。 $(document).ready()在Dom结构绘制完毕后执行,不必等加载完毕。

             2)document.onload不能同时编写多个,如果有 document.onload方法,只会执行一个。$(document).ready()可以同时编写多个,并且都可以得到执行 

      

        11.ajax即异步传输+js+html。所谓异步,在这里简单地说,向服务器发送请求的时候,我们不必等待结果,而是可以同时做其它的事情,等有结果自己会根据设定进行后续操作,

              与此同时,页面是不会发生整页刷新,提高用户体验。    

        12.  1)创建XMLHttpRequest对象,也就是创建一个异步调用对象。

               2)创建一个新的HTTP请求的方法、url及验证信息。

               3)设置响应HTTP请求状态变化的函数

               4)发送HTTP请求

               5)获取异步地调用返回的数据

               6)使用js和Dom实现局部刷新

              aiax和jsonp区别:相同点:都是请求同一个url。不同点:ajax的核心是通过XMLHttpRequest获取内容,jsonp则动态添加<script>调用服务器js脚本。

        13. json是一种轻量级的数据交换格式,它是基于js的一个子集,且数据格式简单,易于读写,占用带宽小。格式:采用键/值对,例如:{“age”:”12,”name”:”wq”}

        14.Get:一般用于信息获取,使用url传递参数,对所发送信息的数量也有限制,2000个字符。

             Post:一般用于修改服务器上的资源,对所发送的信息没有限制。

             Get方式需要使用Request.QueryString来取得变量的值,Post方式通过Request.Form来获取变量的值,也就是说Get通过地址栏来传值,而Post方式通过提交表单来传值。

             而在一下情况下,请使用Post请求:

             1)无法使用缓存文件(更新服务器上的文件或数据库)

             2)向服务器发送大量数据(Post没有数据量限制)

             3)发送包含未知字符的用户输入时,Post比Get更稳定也更可靠。

       15. 一:方法调用模式 二:函数调用方式 三:构造器调用模式

       16.apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替

           call()的第一个参数是上下文,后续是实例传入的参数序列。

       17.null是一个表示“无”的对象,转为数值时为0;undefined表示“无”的原始值,转为数值为NaN。

       18.push()尾部添加  pop()尾部删除 unshift()头部添加 shift()头部删除

       19.前者是切割数组的形式,后者是将数组转换为字符串。

       20. 思路:1.创建一个新的数组存放结果 2.创建一个空对象

          3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它放到结果数组里,

          同时把这个元素的内容作为对象的属性,并赋值为1,存入到第二步建立的对象中

          说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中访问这个属性,如果能访问到,则说明重复 

        Array.prototype.unique= function () {

            var result ={};

            var newArr=[];

            for( i = 0 ;i <this.length ;i++){

                if(!result[arr]){

                    newArr.push(arr);

                    result[arr] = 1;

                }

            }

            return result

        };

        var arr=[112,112,34,’你好’,112,112,34,’你好’,’str’,’str1′];

        alert(arr.unique());

欢迎分享本文,转载请保留出处:前端ABC » 面试之js篇——基础题

分享到:更多 ()

发表评论 0