近期面试的两家公司所遇到的面试题

以下是我在面试的时候遇到的面试题,当然这个就是面试题,如果做笔试的话,大家还是去其他地方看看吧
PS:我会不定期更新一些我面试当中遇到的面试题,因为网上那些面试题也太乱了,有时候看的累

1).JS如何判断一个变量为数组?

var obj = Object.prototype.toString
    obj.call("aaa")  //-> 输出[Object String]
    obj.call(1111)  //-> 输出[Object Number]
    obj.call(true)  //-> 输出[Object Boolean]
    obj.call([])  //-> 输出[Object Array]
    obj.call({})  //->  输出[Object Object]
    obj.call(null) //-> 输出[Object Null]
    obj.call(undefined) //-> 输出[Object Undefined]
    obj.call(function(){}) //-> 输出[Object Function]

2).两个数组如何把相同的值存放在一个新的数组当中?例如:var a = [1,2,3,4,5], b = [ 2,3,4,7,8,9 ];

实现代码:

function arr( arr1, arr2){
    var n = [];
    for( var i in arr1 ){
        for(var j in arr2){
            if( arr1[i] == arr2[j] ){
                n.push( arr1[i],arr2[j] );
            };
        };
    };
    return n;
}
arr( a , b );

3).JS如何实现继承?

子类.prototype = new 父类();

具体实现代码:

//父类
function Person(name,age){
    this.name = name;
    this.age = age;
};
Person.prototype.showName = function(){
    return this.name;
};
Person.prototype.showAge = function(){
    return this.age;
};
//子类
function Worker (name,age){
    Person.apply( this, arguments )
};
Worker.prototype = new Person();
var w1 = new Person('aaa',10);
alert( w1.showName() );

4).对闭包的理解

解析:闭包就是能够读取其他函数内部变量的函数。
特点:
( 1 ) 闭包外层是一个函数。
( 2 ) 闭包内部都有函数。
( 3 ) 闭包会return内部函数。
( 4 ) 闭包返回的函数内部不能有return(因为这样就真的结束了)。
( 5 ) 执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在。

简单说就是,定义一个函数,内部定义一个局部变量,再在内部定义一个函数,内部函数使用外部函数定义的局部变量,然后进行返回使用的外部变量,外部函数再次返回内部函数的函数体

闭包这个需要大篇幅说明,这里只是怎么能让面试官快速知道你对闭包很了解的简要说明。

如果想深入研究请大家自行百度,我也不能为大家推荐什么好的文章,毕竟每个人看待的东西不一样。

5).自己写个json,然后存放在window.localStorage中,怎么实现。

直接上代码:

//Json对象
var oJson ={ a: 10,b:20,c:'sss' } ; 
//json对象转字符串json    
oJson = JSON.stringify( oJson );
//用localStorage的setItem方法把值存进去
localStorage.setItem('oJson', oJson);       
//使用
//用getItem方法获取存的值   
var oj = localStorage.getItem('oJson'); 
//把字符串josn转为真正的Json 
oj = JSON.parse( oj );              

猜你喜欢

转载自blog.csdn.net/qq_15902869/article/details/56497847