以下是我在面试的时候遇到的面试题,当然这个就是面试题,如果做笔试的话,大家还是去其他地方看看吧
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 );